优化推送脚本
This commit is contained in:
@@ -30,8 +30,23 @@ if /i "%confirm%" neq "y" (
|
||||
:: 检查是否有更改需要提交
|
||||
echo.
|
||||
echo [2/4] 检查更改状态...
|
||||
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%
|
||||
|
||||
:: 检查未跟踪的文件
|
||||
git ls-files --others --exclude-standard >nul 2>&1
|
||||
set has_untracked=%errorlevel%
|
||||
|
||||
if %has_unstaged% equ 0 if %has_staged% equ 0 if %has_untracked% neq 0 (
|
||||
echo ℹ️ 没有检测到任何更改,无需提交
|
||||
echo.
|
||||
echo ✅ 工作区干净,无需推送
|
||||
@@ -39,6 +54,30 @@ if %errorlevel% equ 0 (
|
||||
exit /b 0
|
||||
)
|
||||
|
||||
:: 显示详细状态
|
||||
echo 📊 详细状态信息:
|
||||
echo 未暂存更改:
|
||||
if %has_unstaged% neq 0 (
|
||||
git diff --name-only
|
||||
) else (
|
||||
echo 无
|
||||
)
|
||||
|
||||
echo 已暂存更改:
|
||||
if %has_staged% neq 0 (
|
||||
git diff --cached --name-only
|
||||
) else (
|
||||
echo 无
|
||||
)
|
||||
|
||||
echo 未跟踪文件:
|
||||
if %has_untracked% neq 0 (
|
||||
git ls-files --others --exclude-standard
|
||||
) else (
|
||||
echo 无
|
||||
)
|
||||
echo.
|
||||
|
||||
:: 添加所有更改
|
||||
echo 添加所有更改到暂存区...
|
||||
git add .
|
||||
@@ -160,21 +199,54 @@ echo ✅ 提交成功
|
||||
:: 推送到远程仓库
|
||||
echo.
|
||||
echo [4/4] 推送到远程仓库...
|
||||
|
||||
:: 先尝试拉取最新更改
|
||||
echo 🔄 检查远程更新...
|
||||
git fetch origin main
|
||||
if %errorlevel% neq 0 (
|
||||
echo ⚠️ 无法获取远程更新,继续推送...
|
||||
) else (
|
||||
echo ✅ 远程更新检查完成
|
||||
)
|
||||
|
||||
:: 推送到远程
|
||||
git push origin main
|
||||
if %errorlevel% neq 0 (
|
||||
echo ❌ 推送失败
|
||||
echo.
|
||||
echo 💡 可能的原因:
|
||||
echo - 网络连接问题
|
||||
echo - 远程仓库权限不足
|
||||
echo - 分支冲突
|
||||
echo - 需要先拉取远程更改
|
||||
echo.
|
||||
echo 🔧 建议解决方案:
|
||||
echo 1. 检查网络连接
|
||||
echo 2. 运行: git pull origin main
|
||||
echo 3. 重新运行推送脚本
|
||||
pause
|
||||
exit /b 1
|
||||
echo 🔧 尝试自动解决冲突...
|
||||
git pull origin main --rebase
|
||||
if %errorlevel% equ 0 (
|
||||
echo ✅ 冲突已解决,重新推送...
|
||||
git push origin main
|
||||
if %errorlevel% equ 0 (
|
||||
echo ✅ 推送成功!
|
||||
) else (
|
||||
echo ❌ 重新推送失败
|
||||
echo.
|
||||
echo 🔧 建议手动解决:
|
||||
echo 1. 运行: git pull origin main
|
||||
echo 2. 解决冲突后运行: git push origin main
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo ❌ 无法自动解决冲突
|
||||
echo.
|
||||
echo 🔧 建议手动解决:
|
||||
echo 1. 运行: git pull origin main
|
||||
echo 2. 解决冲突后运行: git push origin main
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo ✅ 推送成功!
|
||||
)
|
||||
|
||||
echo.
|
||||
|
||||
Reference in New Issue
Block a user