git cherry-pick

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

这时分两种情况:

你需要另一个分支的所有代码变动,那么就采用合并(git merge)。

你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。

Cherry pick直译为捡樱桃🍒,它的功能是把已经存在的commit进行挑选,然后重新提交。比较合适的一个场景是把A分支的某次或者多次的提交也提交到B分支上,使用方法


一、转移一个提交

先切换到 A 分支

$ git checkout A

找到这次提交

  $ git log

  commit f038d7ffb1685af7d4f870ad0b798670b6f760e8 (HEAD -> feature/0113_update)

  Author: qxj <qxj@qq.com>

  Date:  Thu Jan 14 15:24:54 2021 +0800

      feat: xxx

再切换到B分支

$ git checkout B


把 A 分支下的这次commit 重新提交到 B 分支下

$ git cherry-pick 'f038d7ffb1685af7d4f870ad0b798670b6f760e8'

当执行完 git cherry-pick以后,将会生成一个新的提交,这个新的提交的hash值和原来的不同,但标志名称一样。


二、转移多个提交

Cherry pick 支持一次转移多个提交。

$ git cherry-pick <HashA> <HashB>


上面的命令将 A 和 B 两个提交应用到当前分支。这会在当前分支生成两个对应的新提交。

如果想要转移一系列的连续提交,可以使用下面的简便语法。

$ git cherry-pick A..B


上面的命令可以转移从 A 到 B 的(**左开右闭,不包含A)**所有提交。它们必须按照正确的顺序放置:提交 A 必须早于提交 B,否则命令将失败,但不会报错。

如果要包含提交 A,可以使用下面的语法。

$ git cherry-pick A^..B

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容