@echo off chcp 65001 >nul echo ======================================== echo Git 推送修复脚本 echo ======================================== echo. echo [1/6] 检查远程仓库配置... git remote -v echo. echo [2/6] 如果需要更新远程URL,请输入新的URL,否则按回车跳过 set /p NEW_URL="新URL (留空跳过): " if not "%NEW_URL%"=="" ( echo 更新远程仓库URL... git remote set-url origin %NEW_URL% echo 已更新为: %NEW_URL% ) echo. echo [3/6] 检查当前分支... git branch echo. echo [4/6] 检查是否有未提交的更改... git status --short if %errorlevel% equ 0 ( echo 有未提交的更改,正在添加... git add . echo 创建提交... git commit -m "Update: 更新代码 - %date% %time%" ) else ( echo 检查是否有未暂存的文件... git diff --quiet if %errorlevel% neq 0 ( echo 有未暂存的文件,正在添加... git add . git commit -m "Update: 更新代码 - %date% %time%" ) else ( git diff --cached --quiet if %errorlevel% neq 0 ( echo 有已暂存但未提交的文件,创建提交... git commit -m "Update: 更新代码 - %date% %time%" ) else ( echo 没有需要提交的更改 ) ) ) echo. echo [5/6] 检查提交历史... git log --oneline -3 echo. echo [6/6] 准备推送... REM 获取当前分支名称 for /f "tokens=*" %%b in ('git branch --show-current 2^>nul') do set CURRENT_BRANCH=%%b if "%CURRENT_BRANCH%"=="" ( for /f "tokens=*" %%b in ('git branch 2^>nul ^| findstr /C:"*"') do set CURRENT_BRANCH=%%b set CURRENT_BRANCH=%CURRENT_BRANCH:* =% ) echo 当前分支: %CURRENT_BRANCH% if "%CURRENT_BRANCH%"=="" ( echo 警告: 无法确定当前分支,尝试使用 master set CURRENT_BRANCH=master ) echo. echo 尝试推送到远程仓库... echo 如果失败,请尝试: git push -u origin %CURRENT_BRANCH% git push -u origin %CURRENT_BRANCH% if %errorlevel% neq 0 ( echo. echo 推送失败,尝试其他方法... echo. echo 选项1: 如果远程使用 main 分支 echo git branch -M main echo git push -u origin main echo. echo 选项2: 如果远程仓库是空的,强制推送 echo git push -u origin %CURRENT_BRANCH% --force echo. echo 选项3: 先拉取远程内容 echo git pull origin %CURRENT_BRANCH% --allow-unrelated-histories echo git push -u origin %CURRENT_BRANCH% ) echo. echo ======================================== echo 完成! echo ======================================== pause