Bat 合并git分支

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
posted @ 2020-01-30 21:37  一杯晨光  阅读(568)  评论(0编辑  收藏  举报