原因
由于工作流程需要,策划在让我们提交到develop分支后还需要同时提交到release分支,一般的操作则是,先在develop分支提交,获得commit id(这里标为commit_id),然后切换到release,再使用git cherry-pick commit_id指令进行提交,然后再git push即可。
但是,这么重复性的工作对于追求效率(懒惰)的程序员是不可以存在的,于是就有了下面的工具。本人也是在对cmd指令不熟的情况下边摸边测试的。
基本自动化流程
- 先在develop分支进行git stash,防止切换分支失败
- 切换到release分支,然后再git pull
- 进行 git cherry-pick操作及push操作
- 切回develop分支然后进行git stash pop操作,将之前保存在暂存区的更改取出
细节
首先将脚本放置在工程目录下,即可直接使用git指令了。然后cherry-pick需要一个commit id可以通过cmd来进行输入,代码如下:
set /p cherry_pick_id=Please Input Commit ID:
这样即可将commit_id的值赋值给cherry_pick_id,在后面进行cherry-pick时可以使用到。
接下来则是进行git的相关操作:
git stash
git checkout release-jp-1.7.0
git pull
以及cherry-pick操作,这里使用了 %% 操作符来获得变量的值。下一行则是获取cherry-pick操作的结果,因为可能会有失败的情况出现,需要在失败时对用户进行提示,所以将其结果保存起来。
git cherry-pick %cherry_pick_id%
set cherry_pick_result=%ERRORLEVEL%
下面的则是切回develop分支的操作,然后最后弹出提示框:
IF %cherry_pick_result% neq 0 goto error
IF %cherry_pick_result% equ 0 goto finish
:error
mshta vbscript:msgbox("Cherry Pick Error",64,"Error")(window.close)
exit
:finish
mshta vbscript:msgbox("Cherry Pick Finish",64,"Finish")(window.close)
exit
git 地址:
https://github.com/OhZero/auto_cherry_pick_to_branch
欢迎star…