109 lines
2.5 KiB
Batchfile
109 lines
2.5 KiB
Batchfile
@echo off
|
||
chcp 65001 >nul
|
||
setlocal enabledelayedexpansion
|
||
|
||
echo ========================================
|
||
echo 简单Git推送工具
|
||
echo ========================================
|
||
echo.
|
||
|
||
:: 1. 显示Git状态
|
||
echo [1] Git状态:
|
||
git status --short
|
||
echo.
|
||
|
||
:: 2. 显示远程仓库
|
||
echo [2] 远程仓库:
|
||
git remote -v
|
||
if %errorlevel% neq 0 (
|
||
echo 错误: 未配置远程仓库
|
||
pause
|
||
exit /b 1
|
||
)
|
||
echo.
|
||
|
||
:: 3. 显示当前分支
|
||
echo [3] 当前分支:
|
||
for /f "tokens=*" %%b in ('git branch --show-current 2^>nul') do set branch=%%b
|
||
if "!branch!"=="" (
|
||
echo 警告: 无法获取分支名称,尝试使用main
|
||
set branch=main
|
||
)
|
||
echo 分支: !branch!
|
||
echo.
|
||
|
||
:: 4. 检查是否有未提交的更改
|
||
echo [4] 检查未提交的更改...
|
||
git diff --quiet
|
||
set has_uncommitted=%errorlevel%
|
||
git diff --cached --quiet
|
||
set has_staged=%errorlevel%
|
||
|
||
if %has_uncommitted% neq 0 (
|
||
echo 有未暂存的更改
|
||
)
|
||
if %has_staged% neq 0 (
|
||
echo 有已暂存的更改
|
||
)
|
||
if %has_uncommitted% equ 0 if %has_staged% equ 0 (
|
||
echo 所有更改已提交
|
||
)
|
||
echo.
|
||
|
||
:: 5. 尝试推送
|
||
echo [5] 开始推送...
|
||
echo 命令: git push origin !branch!
|
||
echo.
|
||
|
||
git push origin !branch! 2>&1 | findstr /v "^$"
|
||
set push_error=!errorlevel!
|
||
|
||
if !push_error! equ 0 (
|
||
echo.
|
||
echo ========================================
|
||
echo 推送成功!
|
||
echo ========================================
|
||
) else (
|
||
echo.
|
||
echo ========================================
|
||
echo 推送失败!错误码: !push_error!
|
||
echo ========================================
|
||
echo.
|
||
echo 尝试设置上游并推送...
|
||
git push -u origin !branch! 2>&1 | findstr /v "^$"
|
||
set push_u_error=!errorlevel!
|
||
|
||
if !push_u_error! equ 0 (
|
||
echo.
|
||
echo ========================================
|
||
echo 推送成功(已设置上游)!
|
||
echo ========================================
|
||
) else (
|
||
echo.
|
||
echo ========================================
|
||
echo 推送仍然失败
|
||
echo ========================================
|
||
echo.
|
||
echo 常见问题和解决方案:
|
||
echo.
|
||
echo 1. 认证问题:
|
||
echo - 检查SSH密钥: ssh -T git@github.com (GitHub)
|
||
echo - 检查SSH密钥: ssh -T git@gitee.com (Gitee)
|
||
echo - 或使用HTTPS + Personal Access Token
|
||
echo.
|
||
echo 2. 远程仓库地址:
|
||
git config --get remote.origin.url
|
||
echo.
|
||
echo 3. 分支冲突:
|
||
echo - 先拉取: git pull origin !branch! --rebase
|
||
echo - 解决冲突后推送: git push origin !branch!
|
||
echo.
|
||
echo 4. 检查网络连接和远程仓库权限
|
||
echo.
|
||
)
|
||
)
|
||
|
||
echo.
|
||
pause
|
||
|