@echo off REM 1. 获取所有未跟踪或者修改的文件 echo 正在获取未跟踪或修改的文件... setlocal enabledelayedexpansion REM 清空变量 set "modified_files=" set "untracked_files=" REM 收集修改的文件 for /f "tokens=*" %%i in ('git ls-files --modified') do ( echo 修改的文件: %%i set "modified_files=!modified_files! %%i" ) REM 收集未跟踪的文件 for /f "tokens=*" %%i in ('git ls-files --others --exclude-standard') do ( echo 未跟踪的文件: %%i set "untracked_files=!untracked_files! %%i" ) REM 2. 获取当前 Git 用户名 for /f "tokens=*" %%u in ('git config user.name') do set "username=%%u" echo 当前 Git 用户名是: %username% REM 3. 创建两个列表来存储文件 set "invalid_files=" set "valid_files=" REM 4. 检查文件路径是否符合要求 echo 正在检查文件路径... for %%f in (!modified_files! !untracked_files!) do ( echo %%f | findstr /i "Content/PrivateCommonLiberal/%username%" >nul if errorlevel 1 ( echo 文件未通过检查: %%f set "invalid_files=!invalid_files! %%f" ) else ( echo 文件通过检查: %%f set "valid_files=!valid_files! %%f" ) ) REM 5. 检查未通过文件列表 if not "!invalid_files!"=="" ( echo 推送失败:以下文件不符合要求,请检查: for %%f in (!invalid_files!) do echo %%f echo. set /p "confirm=是否忽略这些文件并继续提交?(y/n): " if /i "!confirm!"=="y" ( echo 正在丢弃未通过的文件更改... for %%f in (!invalid_files!) do ( git reset "%%f" >nul 2>&1 git checkout -- "%%f" >nul 2>&1 git clean -f "%%f" >nul 2>&1 ) ) else ( echo 操作已取消。 pause exit /b 1 ) ) REM 6. 输入提交信息 echo 所有文件符合要求,准备提交... set /p "title=请输入提交标题:" set /p "details=请输入提交细节:" REM 7. 提交通过检查的文件 for %%f in (!valid_files!) do ( git add "%%f" ) git commit -m "%title%" -m "%details%" if %errorlevel% neq 0 ( echo 错误: 提交失败,请检查是否有更改。 pause exit /b 1 ) echo 提交成功! pause