likes
comments
collection
share

git cherry-pick 基础用法

作者站长头像
站长
· 阅读数 7

前言

最近醉心于写代码无法自拔,某天,新切了一个分支,准备搞个尝试性的小功能,搞完之后,忘了切分支,继续开发新功能,就这样写呀写呀写,在提交代码的时候,猛然发现分支忘切了...

主角登场

我们开发的项目往往都是多分支的代码仓库,经常会遇到将一个分支的代码转移到另一个分支的情况。如果遇到只需要将一个提交或某几个提交转移到另一个分支的情况,就可以用我们的cherry-pick了。

cherry-pick翻译过来就是挑选樱桃,顾名思义,就是一个一个挑选的意思。我们可以使用cherry-pick将指定的commit提交应用于其他分支。具体命令如下:

git cherry-pick <commitHash>

这个命令会将指定的提交commitHash,应用于当前分支(目标分支)。并且会在当前分支产生一个新的commitHash不一样的提交。

当前,我们也可以直接使用分支名feature来转移该分支的最新提交。如下代码标识将feature分支的最近一次提交,转移到当前分支。

git cherry-pick feature

转移多个提交

还有一种情况就是,你在一个错误的分支上一直写呀写呀写,提交了好几个commit,最后要合并代码的时候发现写到别的分支上了,这时候我们要一次转移多个提交,我们该怎么做呢?

git cherry-pick <HashA> <HashB>

以上命令会将HashAHashB两个提交应用到当前分支,并且在当前分支生成两个对应的新提交。

如果想要转移连续的几个提交,可以使用下面的语法。

git cherry-pick A..B

这个命令可以转移从A到B的所有提交commit提交A必须早于提交B,否则命令将失败,但不会报错。 但是上面的命令,提交A将不会包含在cherry pick中。如果要包含提交A,需要使用下面的语法:

git cherry-pick A^..B

代码冲突

执行cherry-pick的过程中,也会有发生代码冲突的情况,这种情况下,cherry-pick会停下来,需要让我们来决定如何继续操作。

  1. --continue 我们将代码冲突解决后,将修改的文件重新加入暂存区(git add .),我们使用下面的命令,让cherry-pick继续执行。
git cherry-pick --continue
  1. --abort 如果代码发生冲突后,发现很难解决,需要放弃合并,回到操作前的样子,则可以使用下面的命令:
git cherry-pick --abort
  1. --quit 发生代码冲突后,退出cherry-pick,但是不回到操作前的样子。
git cherry-pick --quit

最后

以上用法在工作中基本就够用了,cherry-pick还有一些其他比较高级的用法,感兴趣的小伙伴可以继续深入研究一下。

转载自:https://juejin.cn/post/7229565416003190840
评论
请登录