关于Git命令之cherry-pick的使用

一、前言

对于多分支的代码库,将代码从一个分支转移到另一个分支是一个常见的需求。

这个时候就得分为两种情况。一种情况是:你需要这个分支上面的所有代码,那就采用合并,直接使用git merge或者git rebase命令即可。另外一种情况就是,你只需要这个分支上面的某些提交,那就需要采用gii cherry-pick的命令,这个操作在日常开发的工作中,也是非常的常用,需要我们记住和学习。

最近在工作中就遇到了类似的问题,一个开发分支上修改了代码,需要上线,但是当前分支上还在开发其他的功能,不能直接合并到release分支,这个时候就需要采用git cherry-pick的命令了,其中需要注意的地方是,我们需要先从release分支上面迁出一个临时分支release-pick,在当前分支上面使用cherry-pick命令,然后在直接mergerelease分支上面,那为什么不能直接在release分支上面使用cherry-pick命令呢?那是因为我们要保证release分支的干净和整洁,不能有提交点,如果直接在release分支上面使用cherry-pick命令的话,会导致release分支上面有提交点,最后操作完成后,可以删除临时分支release-pick

二、基本用法

git cherry-pick命令的作用,就是将指定的提交(commit)应用于其他的分支

git cherry-pick <commitHash>

上面的命令就会将指定的提交commitHash,应用于当前分支。这会在当前分支产生一个新的提交,当然它们它们的哈希值会不一样。

举个栗子,代码仓库有masterfeature两个分支。

 a - b - c - d   Master
         \
           e - f - g Feature

现在将提交f应用到master分支

#切换到master分支
git checkout master

#cherry-pick操作
git cherry-pick f

上面操作完成后,代码库就会变成下面这个样子。

 a - b - c - d - f   Master
         \
           e - f - g Feature

从上面可以看出来,master分支的末尾多了一个提交f

git cherry-pick命令的参数不一定是提交哈希值,分支名也可以,表示合并该分支最新的一次提交。

eg:

git cherry-pick feature

上面的命令表示,将分支feature最新的一次提交合并到当前分支

三、转移多个提交

cherry pick支持转移多个提交

eg:

git cherry-pick <hashA>  <hashB>

上面的代码表示将A和B两个提交应用到当前分支,在当前分支会生成两个新的提交

如果想转移一系列的提交,可以使用以下简洁的命令

git cherry-pick A..B

上述代码表示,将A和B之间的提交全部应用到当前分支(不包括A提交),A提交必须要早于B提交,不然会发生错误。

如果想包括A提交,可以使用一下的命令即可

git cherry-pick A^..B

四、配置项

cherry-pick常用的配置命令如下:

1、-e, -edit

打开外部编辑器,编辑提交信息

2、-n,--no-commit

只更新工作区和暂存区,不产生新的提交

3、-x

在提交信息的末尾追加一行(cherry picked from commit ...),方便以后查到这个提交是如何产生的。

4、-s,--signoff

在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。

五、代码冲突

如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。

1、–continue

用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

git cherry-pick --continue

2、–abort

发生代码冲突后,放弃合并,回到操作前的样子。

3、–quit
发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。

六、实践练习

这里推荐一个在线学习使用git命令的一个网站:https://oschina.gitee.io/learn-git-branching/

本文部分内容参考:http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值