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
      
  • 相关阅读:
    MySQL索引底层的实现
    mysql索引深入优化
    explain详解与索引最佳实践
    (MYSQL)回表查询原理,利用联合索引实现索引覆盖
    为什么重复值高的字段不能建索引(比如性别字段等)
    Spring的事务
    为什么要用Redis?Redis为什么这么快?
    spring AOP
    钩子教程
    钩子教程
  • 原文地址:https://www.cnblogs.com/mrcharleshu/p/13179529.html
Copyright © 2011-2022 走看看