美文网首页
git cherry-pick

git cherry-pick

作者: _宋江_ | 来源:发表于2022-06-21 14:11 被阅读0次

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

    这时分两种情况:

    你需要另一个分支的所有代码变动,那么就采用合并(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

    相关文章

      网友评论

          本文标题:git cherry-pick

          本文链接:https://www.haomeiwen.com/subject/rtcevrtx.html