Bat 合并各项目分支,减少合并时间,手动操作的失误。请留意输出信息,很多情况脚本未能自动处理,需要手动处理。
仓库地址,目标分支等都是写死的,你可以稍作修改,从控制台输入。
@echo off ::rem 窗口标题 @title 脚本合并 ::rem 输出合并路径 echo\&echo r4.6_mq_hc r4.6_Time ::rem GIT仓库的根目录 cd /d E:\Git\YLPT-LiXin-Database ::rem 检查工作区是否干净 call:CheckWorkingTree ::rem 合并分支。第一个参数源分支,第二个参数目标分支 call:mergeBranch r4.6_mq_hc r4.7 call:mergeBranch r4.7 r4.7_mainService echo\&echo done... pause exit ::rem 合并分支 :mergeBranch git checkout %1 if not %errorlevel%==0 ( echo 切换到%1分支出现问题。新开窗口解决完错误后,继续…… "C:\Program Files\Git\git-bash.exe" ) git pull if not %errorlevel%==0 ( echo 分支%1获取遇到问题。新开窗口解决完错误后,继续…… "C:\Program Files\Git\git-bash.exe" ) git checkout %2 if not %errorlevel%==0 ( echo 切换到分支%2出现问题。新开窗口解决完错误后,继续…… "C:\Program Files\Git\git-bash.exe" ) git pull if not %errorlevel%==0 ( echo 分支%2获取遇到问题。新开窗口解决完错误后,继续…… "C:\Program Files\Git\git-bash.exe" ) git merge %1 set mergeStatus=%errorlevel% if %mergeStatus%==0 ( git push echo ********************** %1 合并到 %2 完成,并提交!!!!!! ********************** ) if not %mergeStatus%==0 ( echo 合并结果确认,确认以后继续…… "C:\Program Files\Git\git-bash.exe" ) echo ********************** %1 合并到 %2 结束!!!!!! ********************** goto:eof ::rem 检查工作区是否干净 ::rem https://stackoverflow.com/questions/5139290/how-to-check-if-theres-nothing-to-be-committed-in-the-current-branch :CheckWorkingTree git diff --exit-code if not %errorlevel%==0 ( echo 合并前保证工作区干净。工作区有未暂存的更改,处理后重新运行 "C:\Program Files\Git\git-bash.exe" pause exit ) git diff --cached --exit-code if not %errorlevel%==0 ( echo 合并前保证工作区干净。工作区有未commit的文件,处理后重新运行 "C:\Program Files\Git\git-bash.exe" pause exit ) git ls-files --other --exclude-standard --directory if not %errorlevel%==0 ( echo 合并前保证工作区干净。工作区有未跟踪的文件,处理后重新运行 "C:\Program Files\Git\git-bash.exe" pause exit ) goto:eof
来源:https://www.cnblogs.com/-dawn/p/12244054.html