git cherry-pick 教程

在多分支开发的时候会有需要把一个分支的部分commit应用到其他的分支上,然而git merge会把一个分支的commits都应用到当前分支,这时候我们可以使用git cherry-pick来完成这一操作,它的作用是选择已存在的commit应用到当前分支上,并产生新的commit SHA-1 校验和。

下面是这个命令的图解示例。

图解示例

如下有两个分支masterdev,从C2开始两个分支开始有不同的commits。

在这里插入图片描述

需要把devC6合并到master,只需在master分支上执行git cherry-pick C6,就会把dev分支的C6应用到master分支上并产生一个新的commitC6'

在这里插入图片描述

如果要合并多个commits,比如C7C8两个commits,可以执行git cherry-pick C7 C8,则git提交记录就会变成下面这样。
在这里插入图片描述

需要注意的是,新的commit SHA-1 校验和会和原来的commit SHA-1 校验和不一样。

基本用法

下面我们来动手感受一下。先准备一下git的提交记录,示例如下图:
在这里插入图片描述

这个时候master分支有C1,C2,C3,C4文件,dev分支有C1,C2,C5,C6,C7,C8,C9文件。在这里插入图片描述

接下来我们把dev分支的一些commits应用到master分支:

  • 根据之前的终端记录或者通过git log dev查看C6的 SHA-1 校验和是fca3793,在master分支上执行git cherry-pick fca3793,可以看到新增了一个 SHA-1 校验和为50982a2的commit并且在master分支上多了一个C6文件。
  • 执行git cherry-pick d67e9f6 7bf5e7d之后,master分支又多了C7,C8两个文件。
    在这里插入图片描述

其他用法

  • 如果想应用连续的多个commits还可以使用git cherry-pick commit1..commitn,应用 SHA-1 校验和从commit1commitn的commits,注意这里并不包含commit1,如果需要包含可以执行git cherry-pick commit1^..commitn

  • 如果只想把某一个分支最后一个commit应用到当前分支,可以直接使用git cherry-pick branch-name,这个命令的效果是,将branch-name分支最后一个commit应用到当前分支。

  • 当然实际使用过程中,使用cherry-pick可能会出现冲突,例如提示如下:
    在这里插入图片描述

    解决冲突再执行git add <paths>将文件标记为以解决冲突,或者执行git rm <paths>直接从暂存区和工作区删除文件,最后执行git cherry-pick --continue,则完成这次cherry-pick

    如果想要取消这次的cherry-pick操作可以执行git cherry-pick --abort


版权声明:如需转载,请带上本文链接、注明来源和本声明。否则将追究法律责任。https://www.immuthex.com/posts/git-cherry-pick-tutorial

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值