git_fix.bat 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. @echo off
  2. chcp 65001 >nul
  3. echo ========================================
  4. echo Git 推送修复脚本
  5. echo ========================================
  6. echo.
  7. echo [1/6] 检查远程仓库配置...
  8. git remote -v
  9. echo.
  10. echo [2/6] 如果需要更新远程URL,请输入新的URL,否则按回车跳过
  11. set /p NEW_URL="新URL (留空跳过): "
  12. if not "%NEW_URL%"=="" (
  13. echo 更新远程仓库URL...
  14. git remote set-url origin %NEW_URL%
  15. echo 已更新为: %NEW_URL%
  16. )
  17. echo.
  18. echo [3/6] 检查当前分支...
  19. git branch
  20. echo.
  21. echo [4/6] 检查是否有未提交的更改...
  22. git status --short
  23. if %errorlevel% equ 0 (
  24. echo 有未提交的更改,正在添加...
  25. git add .
  26. echo 创建提交...
  27. git commit -m "Update: 更新代码 - %date% %time%"
  28. ) else (
  29. echo 检查是否有未暂存的文件...
  30. git diff --quiet
  31. if %errorlevel% neq 0 (
  32. echo 有未暂存的文件,正在添加...
  33. git add .
  34. git commit -m "Update: 更新代码 - %date% %time%"
  35. ) else (
  36. git diff --cached --quiet
  37. if %errorlevel% neq 0 (
  38. echo 有已暂存但未提交的文件,创建提交...
  39. git commit -m "Update: 更新代码 - %date% %time%"
  40. ) else (
  41. echo 没有需要提交的更改
  42. )
  43. )
  44. )
  45. echo.
  46. echo [5/6] 检查提交历史...
  47. git log --oneline -3
  48. echo.
  49. echo [6/6] 准备推送...
  50. REM 获取当前分支名称
  51. for /f "tokens=*" %%b in ('git branch --show-current 2^>nul') do set CURRENT_BRANCH=%%b
  52. if "%CURRENT_BRANCH%"=="" (
  53. for /f "tokens=*" %%b in ('git branch 2^>nul ^| findstr /C:"*"') do set CURRENT_BRANCH=%%b
  54. set CURRENT_BRANCH=%CURRENT_BRANCH:* =%
  55. )
  56. echo 当前分支: %CURRENT_BRANCH%
  57. if "%CURRENT_BRANCH%"=="" (
  58. echo 警告: 无法确定当前分支,尝试使用 master
  59. set CURRENT_BRANCH=master
  60. )
  61. echo.
  62. echo 尝试推送到远程仓库...
  63. echo 如果失败,请尝试: git push -u origin %CURRENT_BRANCH%
  64. git push -u origin %CURRENT_BRANCH%
  65. if %errorlevel% neq 0 (
  66. echo.
  67. echo 推送失败,尝试其他方法...
  68. echo.
  69. echo 选项1: 如果远程使用 main 分支
  70. echo git branch -M main
  71. echo git push -u origin main
  72. echo.
  73. echo 选项2: 如果远程仓库是空的,强制推送
  74. echo git push -u origin %CURRENT_BRANCH% --force
  75. echo.
  76. echo 选项3: 先拉取远程内容
  77. echo git pull origin %CURRENT_BRANCH% --allow-unrelated-histories
  78. echo git push -u origin %CURRENT_BRANCH%
  79. )
  80. echo.
  81. echo ========================================
  82. echo 完成!
  83. echo ========================================
  84. pause