- 删除多个不再使用的脚本和配置文件,包括 `auto_push.bat`, `check_and_fix_users.py`, `init.sql` 等。 - 新增 `git_push.bat` 和 `git_push.sh` 脚本以简化 Git 推送流程。 - 更新 `README.md` 以反映最新的功能和结构变化。 - 优化前端代码,添加新的页面和组件,提升用户体验。 此提交旨在清理项目结构并增强代码可维护性。
263 lines
6.3 KiB
Batchfile
263 lines
6.3 KiB
Batchfile
@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
|