git cherry-pick从问题分支里分离正常commit

开源布道者
• 阅读 1162

背景

有时候,我们的分支合并了别人的有问题代码的分支(比如别人准备上线的代码,已经合并到了master但是发现有bug要延迟上线,而我们已经合并了master),为了不被问题代码影响进度,需要给自己没有问题的代码重新拉一个分支

操作

命令如下:

git log --reverse --author={your_name} --no-merges --pretty=%H master..{your_branch} > commits.txt
  • --reverse 将commit从远到近逆序,后续合并必须
  • --author 指定提交人,有多个就指定多个参数
  • --no-merges 剔除合并提交,一般情况并不需要
  • --pretty 只展示每个提交的SHA1值
  • master..{branch} 过滤出在某分支但不在master分支的提交

从master拉一个新分支,用git cherry-pick把commit全部合并到新分支上

git cherry-pick `cat commits.txt`

一行命令:

git cherry-pick `git log --reverse --author={your_name} --no-merges --pretty=%H master..{your_branch}`

异常QA

The previous cherry-pick is now empty, possibly due to conflict resolution.

说明当前的commit遗漏了前置的commit,没有这个commit后续的都合并不了,需要排查下是否遗漏了别人的或者这个日期之前的commit。也可能是你在合并提交里手动修改了代码,这个合并提交也需要合并进来,这时候会报下面的错误

error: commit {id} is a merge but no -m option was given.

说明git log找到的commit里有合并提交,cherry-pick不知道合并合并哪个的,需要指定选项-m,要哪个分支的代码参数就是几

点赞
收藏
评论区
推荐文章
DevOpSec DevOpSec
2年前
解决研发痛点SnoarQube代码检查实战
1.代码质量检查,想知道团队成员代码质量情况,团队人多后每个人的代码风格和代码水平不一通过sonar检测能做到代码基准的一个把控。2.master代码质量是基准,可以理解master分支的sonar检测是通过的,分支代码质量检查和master代码进行比对,我们是master上线。3.sonar检测后把结果发送通知给对应的开发和其TL,开发能及时知道自己开发代码是否有问题
放学路上 放学路上
3年前
git常见合并冲突场景以及解决办法
git很好用,但是遇到合并冲突就会很痛苦!在此之前我一直都是个人开发者,因此对git的使用也不熟悉,本文将持续总结我在使用git合并过程中遇到的冲突的场景以及产生冲突后的解决办法。如果有不足的的地方还请各位大佬指正!一、第一种情况1、场景描述:当两人都拉取了同一个分支的代码,然后两人都对代码进行了修改,假设其中一人把他修改完的代码上传到master分支,这时
Stella981 Stella981
3年前
Github仓库master分支到main分支迁移指南
1概述2020年10月1日后,Github会将所有新建的仓库的默认分支从master修改为main,这就导致了一些旧仓库主分支是master,新仓库主分支是main的问题,这在有时候会带来一些麻烦,因此这里提供一种方案将旧仓库的master分支迁移到main分支。2具体步骤四步:
Stella981 Stella981
3年前
SpotBugs注解SuppressWarnings在Java&Groovy中的应用
在最近做Java服务端代码静态测试过程中,目前采取的方案如下:测试拉取代码到本地。使用IDE:Intellij,插件:SpotBugs(无增强插件)进行静态测试,更新BUG信息,维护文档和代码中的注解。开发修复禅道BUG。QA拉取修复代码分支,与本地分支(含有抑制注解)进行合并,
Stella981 Stella981
3年前
Git 使用教程—以 GitLab 上的 Django 项目为例
一、代码提交流程1\.clone代码到本地有两个命令,第一个是clonemaster主分支代码,第二个是clone某个branch分支代码。团队项目开发中,我一般是clone别人分支代码进行整合,master主分支代码很少动。gitclonehttp://www.xxx.xxx.git
Stella981 Stella981
3年前
Git详解之三 Git分支(第二部分)
3.3 分支的管理到目前为止,你已经学会了如何创建、合并和删除分支。除此之外,我们还需要学习如何管理分支,在日后的常规工作中会经常用到下面介绍的管理命令。gitbranch 命令不仅仅能创建和删除分支,如果不加任何参数,它会给出当前所有分支的清单:$ git branch iss53  master 
Stella981 Stella981
3年前
GitFlow原理浅析
一、Git优点分布式存储,本地仓库包含了远程仓库的所有内容.安全性高,远程仓库文件丢失了也不怕优秀的分支模型,创建/合并分支非常的方便方便快速,由于代码本地都有存储,所以从远程拉取和分支合并时都非常快捷当分支过多时,如何管理这些分支呢?我们团队采用了GitFlow的模式
住儿 住儿
2年前
Git Rebase
什么是gitrebase?gitrebase是将更改从一个分支合并到另一个分支的两个git过程之一(另一个是gitmerge)。虽然merge总是可以简单的地合并分支,但是
Git 代码分支管理 | 京东云技术团队
Git代码分支的命名规范以及管理方式对项目的版本发布至关重要,为了解决实际开发过程中版本发布时代码管理混乱、冲突等比较头疼的问题,我们将在文中阐述如何更好的管理代码分支。
小万哥 小万哥
2年前
Git分支教程:详解分支创建、合并、删除等操作
Git是一种强大的分布式版本控制系统,它的分支功能使得团队协作和代码管理变得更加灵活和高效。分支可以让开发人员在不影响主线开发的情况下进行并行开发和实验性工作。本篇博客将详解Git分支的创建、合并、删除等操作,帮助你更好地理解和使用Git的分支功能。分支的
绣鸾 绣鸾
1年前
Fork for Mac(Git客户端)
是一款适用于Mac平台的Git客户端,它提供了一系列强大的功能,包括分支管理、代码比较、合并和冲突解决等。以下是Fork的一些特点和优点:直观的用户界面:Fork具有直观的用户界面和简单易用的操作,可以帮助用户快速地学习和使用Git。分支管理:该软件提供了