@echo off chcp 65001 >nul echo ======================================== echo TSP智能助手 - 自动推送脚本 echo ======================================== echo. :: 检查Git状态 echo [1/4] 检查Git状态... git status --porcelain >nul 2>&1 if %errorlevel% neq 0 ( echo ❌ Git未初始化或不在Git仓库中 pause exit /b 1 ) :: 显示当前状态 echo 📋 当前Git状态: git status --short echo. :: 询问是否继续 set /p confirm="是否继续推送? (y/n): " if /i "%confirm%" neq "y" ( echo 操作已取消 pause exit /b 0 ) :: 检查是否有更改需要提交 echo. echo [2/4] 检查更改状态... :: 启用延迟变量扩展 setlocal enabledelayedexpansion :: 检查未暂存的更改 git diff --quiet set has_unstaged=%errorlevel% :: 检查已暂存的更改 git diff --cached --quiet set has_staged=%errorlevel% :: 检查未跟踪的文件 git ls-files --others --exclude-standard >nul 2>&1 set has_untracked=%errorlevel% if %has_unstaged% equ 0 if %has_staged% equ 0 if %has_untracked% neq 0 ( echo ℹ️ 没有检测到任何更改,无需提交 echo. echo ✅ 工作区干净,无需推送 pause exit /b 0 ) :: 显示详细状态 echo 📊 详细状态信息: echo 未暂存更改: if %has_unstaged% neq 0 ( git diff --name-only ) else ( echo 无 ) echo 已暂存更改: if %has_staged% neq 0 ( git diff --cached --name-only ) else ( echo 无 ) echo 未跟踪文件: if %has_untracked% neq 0 ( git ls-files --others --exclude-standard ) else ( echo 无 ) echo. :: 添加所有更改 echo 添加所有更改到暂存区... git add . if %errorlevel% neq 0 ( echo ❌ 添加文件失败 pause exit /b 1 ) echo ✅ 文件已添加到暂存区 :: 检查markdown文件修改并生成智能提交信息 echo. echo [3/4] 分析markdown文件并生成提交信息... :: 检查是否有markdown文件修改 set md_files= for /f "tokens=*" %%f in ('git diff --name-only --cached 2^>nul ^| findstr /i "\.md$"') do ( set md_files=!md_files! %%f ) for /f "tokens=*" %%f in ('git diff --name-only 2^>nul ^| findstr /i "\.md$"') do ( set md_files=!md_files! %%f ) set commit_msg= if not "%md_files%"=="" ( echo 📝 检测到markdown文件修改: echo %md_files% echo. :: 提取markdown文件的主要内容 set commit_title= set commit_type=docs :: 检查是否有修复相关内容 for %%f in (%md_files%) do ( if exist "%%f" ( for /f "tokens=*" %%l in ('type "%%f" ^| findstr /i "修复\|解决\|问题\|错误"') do ( set commit_type=fix set commit_title=修复问题 goto :found_fix ) ) ) :: 检查是否有新功能相关内容 for %%f in (%md_files%) do ( if exist "%%f" ( for /f "tokens=*" %%l in ('type "%%f" ^| findstr /i "功能\|新增\|添加\|实现"') do ( set commit_type=feat set commit_title=新增功能 goto :found_feature ) ) ) :: 检查是否有优化相关内容 for %%f in (%md_files%) do ( if exist "%%f" ( for /f "tokens=*" %%l in ('type "%%f" ^| findstr /i "优化\|性能\|改进\|提升"') do ( set commit_type=perf set commit_title=性能优化 goto :found_optimization ) ) ) :: 提取文件标题 for %%f in (%md_files%) do ( if exist "%%f" ( for /f "tokens=*" %%l in ('type "%%f" ^| findstr /n "^#" ^| head -1') do ( set line=%%l set line=!line:*:=! set line=!line:# =! set line=!line:## =! if "!line!" neq "" ( set commit_title=!line! goto :found_title ) ) ) ) :found_fix :found_feature :found_optimization :found_title if "%commit_title%"=="" ( set commit_title=更新文档记录 ) :: 生成提交信息 set commit_msg=%commit_type%: %commit_title% echo 📋 生成的提交信息: %commit_msg% echo. ) else ( echo ℹ️ 没有检测到markdown文件修改 set commit_msg=feat: 自动提交 - %date% %time% ) :: 询问是否使用生成的提交信息 set /p confirm="是否使用此提交信息? (y/n/e编辑): " if /i "%confirm%"=="e" ( set /p commit_msg="请输入自定义提交信息: " ) else if /i "%confirm%" neq "y" ( set /p commit_msg="请输入提交信息: " ) :: 提交更改 echo 提交信息: %commit_msg% git commit -m "%commit_msg%" if %errorlevel% neq 0 ( echo ❌ 提交失败 pause exit /b 1 ) echo ✅ 提交成功 :: 推送到远程仓库 echo. echo [4/4] 推送到远程仓库... :: 先尝试拉取最新更改 echo 🔄 检查远程更新... git fetch origin main if %errorlevel% neq 0 ( echo ⚠️ 无法获取远程更新,继续推送... ) else ( echo ✅ 远程更新检查完成 ) :: 推送到远程 git push origin main if %errorlevel% neq 0 ( echo ❌ 推送失败 echo. echo 💡 可能的原因: echo - 网络连接问题 echo - 远程仓库权限不足 echo - 分支冲突 echo - 需要先拉取远程更改 echo. echo 🔧 尝试自动解决冲突... git pull origin main --rebase if %errorlevel% equ 0 ( echo ✅ 冲突已解决,重新推送... git push origin main if %errorlevel% equ 0 ( echo ✅ 推送成功! ) else ( echo ❌ 重新推送失败 echo. echo 🔧 建议手动解决: echo 1. 运行: git pull origin main echo 2. 解决冲突后运行: git push origin main pause exit /b 1 ) ) else ( echo ❌ 无法自动解决冲突 echo. echo 🔧 建议手动解决: echo 1. 运行: git pull origin main echo 2. 解决冲突后运行: git push origin main pause exit /b 1 ) ) else ( echo ✅ 推送成功! ) echo. echo ======================================== echo ✅ 推送完成! echo ======================================== echo 📊 提交统计: git log --oneline -1 echo. echo 🌐 远程仓库状态: git status echo. pause