公司接了個新項目,需在平臺上增長几個新接口,問題是原本說是和平臺一塊兒迭代發佈的時間提早了,但當前的代碼都和其餘開發人員一塊兒提交到了develop中,如今要提早發佈只能從master拉出一個分支來把個人提交都添加上去而後測試發佈。git
當時想到的第一個命令就是這個,檢出個人全部提交,而後應用到另外一個分支中去。平時使用這個命令只是簡單的pick一個提交,如今須要編寫個shell腳本,自動化咱們某段時間內的操做全都pick到新分支上去。shell
這裏面咱們還用到一個很重要的命令git log
用來查詢個人全部提交日誌,最後輸入想要的commit ID
給git cherry-pick
使用,下面是git log
經常使用的格式佔位符寫法及其表明的意義:
測試
因爲公司代碼很差貼出來,因此只能介紹操做方法了。日誌
咱們如今定義操做的步驟:code
拉取最新的master代碼,查看提交記錄orm
gco master;git pull;git log --author="Charles" --reverse --pretty=format:"%H %ad %s" | cat
建立緊急發佈分支blog
git checkout -b hotfix/urgent-publish;git push --set-upstream origin hotfix/urgent-publish
拉取最新的develop的代碼,查看提交記錄接口
gco develop;git pull;git log --author="Charles" --reverse --pretty=format:"%H %ad %s" | cat
grep全部我以前的提交記錄,而後把commit打印出來,並輸出到一行,賦值給變量commits開發
commits=($(git log --author="Charles" --since=2020-05-10 --reverse --pretty=format:"%H %s" | grep -v "Merge branch" | awk '{print $1}' | tr -s "\n" " "))
對每一個commit循環應用cherry-pick,最後提交到發佈分支中去it
for commit in $commits;do git cherry-pick $commit;done git push origin hotfix/urgent-publish