以前很少使用cherry-pick这个命令,今天研究了一下如何使用cherry-pick摘取提交,便记录一下以便后续查阅。初始git历史如下图所示。

现在我们在master分支上开始测试cherry-pick这个提交点上,这个提交点上的commit id674d60f

cherry-pick 摘取一个提交点

git cherry-pick <commit-id>

比如说我们现在要摘取dev分支上的测试 cherry-pick v1这个提交点,这个提交点对应的commit idb0ad65b。那我们就可以运行如下命令。

git cherry-pick b0ad65b

在cherry-pick的过程中如果遇到冲突会给出如下图所示的提示。

我们根据提示,首先手动解决冲突的文件,解决完毕以后运行git add . 暂存所有冲突的文件,然后运行git commit提交。

git add . git commit

然后会出现这样的弹出框让你输入commit信息,你可以使用默认的提交信息,或者更改提交信息。我们这里直接使用默认的提交信息即可。

保存以后测试 cherry-pick v1这个提交已经cherry-pick过来了,如下图所示

cherry-pick 摘取多个提交点

  • 方法1
git cherry-pick <start-commit-id> .. <end-commit-id>

摘取从 start-commit-id 到 end-commit-id之间的所有提交点,注意 这个区间是左开右闭(start-commit-id,end-commit-id]的。不包括start-commit-id,包括end-commit-id。

  • 方法2
git cherry-pick <start-commit-id>^ .. <end-commit-id>

摘取从 start-commit-id 到 end-commit-id之间的所有提交点,注意这个区间是都封闭的[start-commit-id,end-commit-id]的。包括start-commit-id和end-commit-id。

比如我们想摘取dev分支上的三个提交

测试 cherry-pick v3
测试 cherry-pick v2
测试 cherry-pick v1

测试 cherry-pick v1的commit id是b0ad65b
测试 cherry-pick v1的父节点的commit id是fb1d3f5
测试 cherry-pick v3的commit id是d6777d7

我们可以使用

 git cherry-pick fb1d3f5 .. d6777d7

或者

 git cherry-pick b0ad65b^ .. d6777d7

我们这里采用第2中方法。在cherry-pick的过程中遇到冲突会给出如下图所示的提示。

解决步骤和上面一样,就不赘述了,解决完毕以后我们的git历史如下所示。

保存以后第一个commit已经cherry-pick过来了,如下图所示

我们本来是想摘取多个提交点的,现在只有一个提交点被摘取过来了,怎么回事。

不要慌,这是时候运行继续摘取剩下的提交点。

git cherry-pick --continue

继续cherry-pick剩下的提交点,最后结果如下图所示

参考链接:

  • git cherry-pick 使用指南
  • Cherry-Pick | 一日一 Git

Git 使用cherry-pick摘取提交相关推荐

  1. [gitsourcetree]cherry pick和遴选的使用

    前言 cherry pick. 拷贝其中的某一次提交记录. 本文就介绍一种更加快捷的方式 cherry pick. 介绍 此方法主要用于2分支分别独立维护的情况, 即某一分支已经上线了spring-2 ...

  2. git cherry pick

    直接将选定的其他分支的commit,提交到该分支上 不建议使用 git rebase --onto 使用cherry pick代替 http://weblog.avp-ptr.de/20120928/ ...

  3. idea cherry pick 功能 git log 窗口 冲突conflict

    git log 窗口 参考 source tree cherry pick, merge conflict merge conflict 冲突 <<<<<<< ...

  4. IDEA git cherry pick 简单使用

    cherry pick的作用: 参考了一些博客, eg: 参考博客1 参考博客2 再做了个小案例后,我目前的理解是,cherry pick的作用是将一个分支的部分提交/历史提交,可以合并到另外一个分支 ...

  5. 在gerrit上cherry pick多笔提交到一个仓库中

    我们的要求是在dvr_service仓库上从其他分支cherry pick 两笔提交到release/b03chn_rel_sop_3_nobo分支 这两笔提交分别如图所示 如图所示,B02-5746 ...

  6. 如何在Git中更改多次提交的作者和提交者名称以及电子邮件?

    我当时正在学校计算机上编写一个简单的脚本,然后将更改提交到Git(在笔驱动器中的一个回购中,该回购是从家里的计算机中克隆的). 经过几次提交后,我意识到我正在以root用户身份提交东西. 有什么办法可 ...

  7. 如何撤消Git中的最新本地提交?

    我不小心将错误的文件提交给Git ,但是我还没有将提交推送到服务器. 如何撤消本地存储库中的那些提交? #1楼 我想撤消我们共享存储库中的最新五次提交. 我查找了要回滚的修订版ID. 然后我输入以下内 ...

  8. 怎么使用Git远程删除某个历史提交记录

    这篇文章主要介绍"怎么使用Git远程删除某个历史提交记录"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么使用Git远程删除某个 ...

  9. Git系列之修改历史提交信息

    文章の目录 1.查看 git 提交记录 2.修改最近两个或者两次上的commit信息 3.扩展:修改上一次git commit 提交的信息 参考 写在最后 1.查看 git 提交记录 git log ...

最新文章

  1. 详解 Tomcat 的连接数与线程池
  2. synchronized与Lock的区别与使用
  3. 12 个最佳的免费学习编程的游戏网站【转】
  4. 字符串匹配算法Java_如何简单理解字符串匹配算法?
  5. SSM项目开发实战踩坑
  6. linux开机自启服务命令,linux开机自启服务命令
  7. Git的一些必备用法
  8. 【VR】Leap Motion 官网文档 FingerModel (手指模型)
  9. 实习成长之路:MySQL八:普通索引和唯一索引,应该怎么选择?
  10. 利用ace.js编写一个JavaScript编辑器(带智能补全)
  11. 一些PDG格式的Linux书籍(转)
  12. python手机端抢票大麦网_大麦网抢票攻略1.0
  13. 网卡 eth0,eth1,eth2,lo分别代表是什么 意思
  14. vue 中使用canvas画简单的线条动画效果
  15. 金代文化是中华民族文化的重要组成部分
  16. 论文笔记 Digging into self-supervised monocular depth estimation
  17. Python笔记相关
  18. 使用阿里云下载Docker
  19. 51CTO专访人人网黄晶:WEB开发需要随需应变(2)
  20. 揭秘月入100W的互联网黑色产业

热门文章

  1. StringUtils的使用
  2. ARM架构SMMU驱动详解
  3. C语言(字符串输入)
  4. vs2013 编译 该文件已在源编辑器之外被修改
  5. Android实现计时器(Handle+Runable)
  6. 目前计算机常用的硬盘类型,干货大放送,电脑硬盘分类你知道几个?
  7. RNA m6A修饰问题汇总(第二期)
  8. ANSYS——查看剖面图的应力分布云图以及工作平面的相关设置
  9. 鸿蒙系统脱离了安卓么,曝华为手机将脱离安卓系统,3月上线新系统全面改为鸿蒙内核!...
  10. Java IO篇 Java IO编程