@echo off
REM -*- coding: utf-8 -*-
REM Git 自动上传脚本（Windows）

chcp 65001 >nul
setlocal enabledelayedexpansion

echo === Git 自动上传脚本 ===

REM 检查是否在 git 仓库中
if not exist .git (
    echo 错误: 当前目录不是 git 仓库
    exit /b 1
)

REM 获取当前分支
for /f "tokens=2" %%i in ('git branch --show-current 2^>nul') do set CURRENT_BRANCH=%%i
if "!CURRENT_BRANCH!"=="" (
    for /f "delims=" %%i in ('git rev-parse --abbrev-ref HEAD 2^>nul') do set CURRENT_BRANCH=%%i
)
echo 当前分支: !CURRENT_BRANCH!

REM 检查是否有未提交的更改
git status --porcelain >nul 2>&1
if errorlevel 1 (
    echo 没有需要提交的更改
    set /p CONTINUE="是否继续检查远程更新? (y/n) "
    if /i "!CONTINUE!"=="y" (
        echo 拉取远程更新...
        git pull origin !CURRENT_BRANCH! 2>nul || echo 拉取失败，可能没有远程分支
    )
    exit /b 0
)

REM 显示当前状态
echo 当前更改状态:
git status --short

REM 询问是否继续
set /p CONTINUE="是否继续提交并推送? (y/n) "
if /i not "!CONTINUE!"=="y" (
    echo 操作已取消
    exit /b 0
)

REM 获取提交信息
if "%1"=="" (
    set /p COMMIT_MSG="请输入提交信息（或直接按回车使用默认信息）: "
    if "!COMMIT_MSG!"=="" (
        for /f "tokens=1-3 delims=/- " %%a in ('date /t') do set DATE_STR=%%a-%%b-%%c
        for /f "tokens=1-2 delims=: " %%a in ('time /t') do set TIME_STR=%%a:%%b
        set COMMIT_MSG=chore: update code !DATE_STR! !TIME_STR!
    )
) else (
    set COMMIT_MSG=%1
)

REM 添加所有更改
echo 添加文件到暂存区...
git add -A
if errorlevel 1 (
    echo 添加文件失败
    exit /b 1
)

REM 提交更改
echo 提交更改...
git commit -m "!COMMIT_MSG!"
if errorlevel 1 (
    echo 提交失败
    exit /b 1
)
echo 提交成功!

REM 推送到远程
echo 推送到远程仓库...
git push origin !CURRENT_BRANCH!
if errorlevel 1 (
    echo 推送失败，可能需要设置远程仓库或认证
    echo 提示: 可以手动执行 'git push origin !CURRENT_BRANCH!'
    exit /b 1
)

echo ✓ 推送成功!
echo === 完成 ===

