背景

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

操作命令

cherry-pick

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

git log

这里面我们还用到一个很重要的命令git log用来查询我的所有提交日志,最后输入想要的commit IDgit cherry-pick使用,下面是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 "\n" " "))
  • 对每个commit循环应用cherry-pick,最后提交到发布分支中去

    for commit in $commits;do git cherry-pick $commit;done
    git push origin hotfix/urgent-publish

最新文章

  1. 使用工具安装,运行,停止,卸载Window服务
  2. HTML5 WEB SQL
  3. SVN冲突解决:当次提交的和上次提交的出现冲突
  4. 系统安装LOL等游戏后出现VS调试报错"无法调试""拒绝访问"之类的调试错误
  5. 【转】 IOS开发xcode报错之has been modified since the precompiled header was built
  6. HTML学习的开端
  7. 绘制更Smooth的UI
  8. 主题简介 ASP .NET
  9. AIDL使用详解
  10. 初识Html:Html和CSS的关系
  11. 【Electron】Electron开发入门(四):操作PC端文件系统
  12. 【DDD】领域驱动设计实践 —— UI层实现
  13. Hibernate学习笔记(3)---hibernate关联关系映射
  14. Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现
  15. Python----unittest discover()方法与执行顺序
  16. HTTP协议之url详解
  17. js 原生ajax实现
  18. 【Android】修改Android 模拟器IMEI
  19. 爬虫----爬虫请求库requests
  20. Centos iptables防火墙关闭启动详解

热门文章

  1. vue组件使用name属性来生成递归组件
  2. 支持向量机(SVM)必备概念(凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件、KKT条件)
  3. 一起学Vue:CRUD(增删改查)
  4. 走在深夜的小码农 Sixth Day
  5. 专题五:redis的数据类型之set
  6. Android Choreographer 源码分析
  7. 2. DRF 认证、权限、限流、分页、过滤、序列 化
  8. 【Jmeter】Jmeter安装配置教程
  9. Python3网络学习案例四:编写Web Proxy
  10. Spring Cloud Alibaba 基础