原因
由於工作流程需要,策劃在讓我們提交到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…