diff --git a/quick_push.bat b/quick_push.bat index ab0603f..d0c8e39 100644 --- a/quick_push.bat +++ b/quick_push.bat @@ -105,9 +105,19 @@ if "%1"=="" ( echo 📝 提交信息: %commit_msg% echo. -:: 检查是否有更改需要提交 -git diff --quiet && git diff --cached --quiet -if %errorlevel% equ 0 ( +:: 检查是否有更改需要提交(含未跟踪文件) +setlocal enabledelayedexpansion + +git diff --quiet +set has_unstaged=%errorlevel% + +git diff --cached --quiet +set has_staged=%errorlevel% + +set has_untracked=0 +for /f "delims=" %%f in ('git ls-files --others --exclude-standard') do set has_untracked=1 + +if %has_unstaged% equ 0 if %has_staged% equ 0 if %has_untracked% equ 0 ( echo ℹ️ 没有检测到任何更改,无需提交 echo. echo ✅ 工作区干净,无需推送 @@ -134,6 +144,7 @@ if %errorlevel% neq 0 ( exit /b 1 ) +git fetch origin main git push origin main if %errorlevel% equ 0 ( echo. @@ -142,18 +153,22 @@ if %errorlevel% equ 0 ( git log --oneline -1 ) else ( echo. - echo ❌ 推送失败,请检查错误信息 - echo 💡 可能的原因: - echo - 网络连接问题 - echo - 远程仓库权限不足 - echo - 分支冲突 - echo - Git认证失败 - echo. - echo 🔧 建议解决方案: - echo 1. 检查Git用户配置: git config --global user.name - echo 2. 检查Git邮箱配置: git config --global user.email - echo 3. 检查远程仓库权限 - echo 4. 尝试重新认证 + echo ❌ 推送失败,尝试自动解决... + echo 🔄 执行: git pull origin main --rebase + git pull origin main --rebase + if %errorlevel% equ 0 ( + echo ✅ 重试推送... + git push origin main + if %errorlevel% equ 0 ( + echo ✅ 推送成功! + echo 📊 最新提交: + git log --oneline -1 + ) else ( + echo ❌ 重试推送失败,请手动处理 + ) + ) else ( + echo ❌ 自动rebase失败,请手动处理冲突后重试 + ) ) echo.