优化推送脚本

This commit is contained in:
赵杰
2025-09-23 15:37:59 +01:00
parent 63600d1bc2
commit 95501736ec
2 changed files with 159 additions and 11 deletions

View File

@@ -127,6 +127,36 @@ if ($hasChanges -eq 0) {
exit 0
}
# 显示详细状态
Write-ColorOutput "`n📊 详细状态信息:" "Yellow"
# 检查未暂存的更改
$unstaged = git diff --name-only 2>$null
if ($unstaged) {
Write-ColorOutput " 未暂存更改: $($unstaged.Count) 个文件" "Yellow"
$unstaged | ForEach-Object { Write-ColorOutput " ~ $_" "Yellow" }
} else {
Write-ColorOutput " 未暂存更改: 无" "Green"
}
# 检查已暂存的更改
$staged = git diff --cached --name-only 2>$null
if ($staged) {
Write-ColorOutput " 已暂存更改: $($staged.Count) 个文件" "Green"
$staged | ForEach-Object { Write-ColorOutput " + $_" "Green" }
} else {
Write-ColorOutput " 已暂存更改: 无" "Green"
}
# 检查未跟踪的文件
$untracked = git ls-files --others --exclude-standard 2>$null
if ($untracked) {
Write-ColorOutput " 未跟踪文件: $($untracked.Count) 个文件" "Cyan"
$untracked | ForEach-Object { Write-ColorOutput " + $_" "Cyan" }
} else {
Write-ColorOutput " 未跟踪文件: 无" "Green"
}
# 确认操作
if (-not $NoConfirm) {
Write-ColorOutput "`n❓ 是否继续推送?" "Yellow"
@@ -166,14 +196,60 @@ try {
# 推送到远程
Write-Step 4 4 "推送到远程仓库"
# 先尝试拉取最新更改
Write-ColorOutput "🔄 检查远程更新..." "Cyan"
try {
git fetch origin main
Write-ColorOutput "✅ 远程更新检查完成" "Green"
} catch {
Write-ColorOutput "⚠️ 无法获取远程更新,继续推送..." "Yellow"
}
# 推送到远程
try {
git push origin main
Write-ColorOutput "✅ 推送成功" "Green"
} catch {
Write-ColorOutput "❌ 推送失败: $($_.Exception.Message)" "Red"
Write-ColorOutput "请检查网络连接和远程仓库权限" "Yellow"
Read-Host "按任意键退出"
exit 1
Write-ColorOutput "`n💡 可能的原因:" "Yellow"
Write-ColorOutput " - 网络连接问题" "White"
Write-ColorOutput " - 远程仓库权限不足" "White"
Write-ColorOutput " - 分支冲突" "White"
Write-ColorOutput " - 需要先拉取远程更改" "White"
Write-ColorOutput "`n🔧 尝试自动解决冲突..." "Cyan"
try {
git pull origin main --rebase
if ($LASTEXITCODE -eq 0) {
Write-ColorOutput "✅ 冲突已解决,重新推送..." "Green"
git push origin main
if ($LASTEXITCODE -eq 0) {
Write-ColorOutput "✅ 推送成功!" "Green"
} else {
Write-ColorOutput "❌ 重新推送失败" "Red"
Write-ColorOutput "`n🔧 建议手动解决:" "Yellow"
Write-ColorOutput " 1. 运行: git pull origin main" "White"
Write-ColorOutput " 2. 解决冲突后运行: git push origin main" "White"
Read-Host "按任意键退出"
exit 1
}
} else {
Write-ColorOutput "❌ 无法自动解决冲突" "Red"
Write-ColorOutput "`n🔧 建议手动解决:" "Yellow"
Write-ColorOutput " 1. 运行: git pull origin main" "White"
Write-ColorOutput " 2. 解决冲突后运行: git push origin main" "White"
Read-Host "按任意键退出"
exit 1
}
} catch {
Write-ColorOutput "❌ 自动解决冲突失败: $($_.Exception.Message)" "Red"
Write-ColorOutput "`n🔧 建议手动解决:" "Yellow"
Write-ColorOutput " 1. 运行: git pull origin main" "White"
Write-ColorOutput " 2. 解决冲突后运行: git push origin main" "White"
Read-Host "按任意键退出"
exit 1
}
}
# 显示结果