zoukankan      html  css  js  c++  java
  • 紧急发布用cherry-pick检出当前分支所有我的提交记录

    背景

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

    操作命令

    cherry-pick

    当时想到的第一个命令就是这个,检出我的所有提交,然后应用到另一个分支中去。平时使用这个命令只是简单的pick一个提交,现在需要编写个shell脚本,自动化我们某段时间内的操作全都pick到新分支上去。

    git log

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

    Shell脚本

    由于公司代码不好贴出来,所以只能介绍操作方法了。

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

    我们现在定义操作的步骤:

    • 拉取最新的master代码,查看提交记录

      gco master;git pull;git log --author="Charles" --reverse --pretty=format:"%H %ad %s" | cat
      
    • 创建紧急发布分支

      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 "
      " " "))
      
    • 对每个commit循环应用cherry-pick,最后提交到发布分支中去

      for commit in $commits;do git cherry-pick $commit;done
      git push origin hotfix/urgent-publish
      
  • 相关阅读:
    PHP之数据库操作(一)
    PHP之字符串操作
    Subline使用方法
    POST和GET的区别(面试回答)
    面试题(1)
    http协议
    JS 闭包(内存溢出与内存泄漏)(垃圾回收机制)
    JS----事件机制 事件冒泡 事件捕获 事件委托
    js的数据类型、判断对象类型 js对象
    JS----DOM节点操作:创建 ,插入,删除,复制,查找节点
  • 原文地址:https://www.cnblogs.com/mrcharleshu/p/13179529.html
Copyright © 2011-2022 走看看