@echo off
chcp 65001 >nul
title Git Push

cd /d "%~dp0\.."

REM ========== Configure main branch name here ==========
REM Leave empty to auto-detect (priority: master > main > current branch)
set CONFIG_BRANCH=master
REM ======================================================

REM Detect main branch
if "%CONFIG_BRANCH%"=="" (
    REM Auto-detect main branch
    git show-ref --verify --quiet refs/heads/master
    if %errorlevel% == 0 (
        set MAIN_BRANCH=master
    ) else (
        git show-ref --verify --quiet refs/heads/main
        if %errorlevel% == 0 (
            set MAIN_BRANCH=main
        ) else (
            REM If none found, use current branch
            for /f "tokens=*" %%i in ('git rev-parse --abbrev-ref HEAD') do set MAIN_BRANCH=%%i
        )
    )
) else (
    REM Use configured branch
    set MAIN_BRANCH=%CONFIG_BRANCH%
)

REM Show files to be pushed
echo.
echo Files to be pushed:
echo ========================================
git diff --name-status origin/%MAIN_BRANCH%..HEAD 2>nul
if errorlevel 1 (
    REM If remote branch doesn't exist, show all files
    git log --name-status --oneline HEAD 2>nul | findstr /V "^[a-f0-9]"
)
echo ========================================
echo.

REM Push to main branch
git push origin %MAIN_BRANCH%

if errorlevel 1 (
    echo.
    echo [ERROR] Push failed
    echo.
    pause
) else (
    echo.
    echo [OK] Push successful
    echo.
    pause
)
