紧急发布用cherry-pick检出当前分支所有我的提交记录
2024-08-24 12:58:15
背景
公司接了个新项目,需在平台上增加几个新接口,问题是本来说是和平台一起迭代发布的时间提前了,但当前的代码都和其他开发人员一起提交到了develop中,现在要提前发布只能从master拉出一个分支来把我的提交都添加上去然后测试发布。
操作命令
cherry-pick
当时想到的第一个命令就是这个,检出我的所有提交,然后应用到另一个分支中去。平时使用这个命令只是简单的pick一个提交,现在需要编写个shell脚本,自动化我们某段时间内的操作全都pick到新分支上去。
git log
这里面我们还用到一个很重要的命令git log
用来查询我的所有提交日志,最后输入想要的commit ID
给git 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
最新文章
- 使用工具安装,运行,停止,卸载Window服务
- HTML5 WEB SQL
- SVN冲突解决:当次提交的和上次提交的出现冲突
- 系统安装LOL等游戏后出现VS调试报错";无法调试";";拒绝访问";之类的调试错误
- 【转】 IOS开发xcode报错之has been modified since the precompiled header was built
- HTML学习的开端
- 绘制更Smooth的UI
- 主题简介 ASP .NET
- AIDL使用详解
- 初识Html:Html和CSS的关系
- 【Electron】Electron开发入门(四):操作PC端文件系统
- 【DDD】领域驱动设计实践 —— UI层实现
- Hibernate学习笔记(3)---hibernate关联关系映射
- Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现
- Python----unittest discover()方法与执行顺序
- HTTP协议之url详解
- js 原生ajax实现
- 【Android】修改Android 模拟器IMEI
- 爬虫----爬虫请求库requests
- Centos iptables防火墙关闭启动详解