紧急发布用cherry-pick检出当前分支全部个人提交记录

背景

公司接了个新项目,需在平台上增长几个新接口,问题是原本说是和平台一块儿迭代发布的时间提早了,但当前的代码都和其余开发人员一块儿提交到了develop中,如今要提早发布只能从master拉出一个分支来把个人提交都添加上去而后测试发布。git

操做命令

cherry-pick

当时想到的第一个命令就是这个,检出个人全部提交,而后应用到另外一个分支中去。平时使用这个命令只是简单的pick一个提交,如今须要编写个shell脚本,自动化咱们某段时间内的操做全都pick到新分支上去。shell

git log

这里面咱们还用到一个很重要的命令git log用来查询个人全部提交日志,最后输入想要的commit IDgit cherry-pick使用,下面是git log经常使用的格式占位符写法及其表明的意义:
git log经常使用的格式占位符测试

Shell脚本

因为公司代码很差贴出来,因此只能介绍操做方法了。日志

  • 开发分支:develop
  • 线上分支:master
  • 紧急发布分支:hotfix/urgent-publish(不要太关注这个名字,哈哈,和平台的打包策略有关)
  • 我提交的commit author名称:Charles

咱们如今定义操做的步骤: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
相关文章
相关标签/搜索