git cherry-pick 基础用法
前言
最近醉心于写代码无法自拔,某天,新切了一个分支,准备搞个尝试性的小功能,搞完之后,忘了切分支,继续开发新功能,就这样写呀写呀写,在提交代码的时候,猛然发现分支忘切了...
主角登场
我们开发的项目往往都是多分支的代码仓库,经常会遇到将一个分支的代码转移到另一个分支的情况。如果遇到只需要将一个提交或某几个提交转移到另一个分支的情况,就可以用我们的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>
以上命令会将HashA
和HashB
两个提交应用到当前分支,并且在当前分支生成两个对应的新提交。
如果想要转移连续的几个提交,可以使用下面的语法。
git cherry-pick A..B
这个命令可以转移从A到B
的所有提交commit
,提交A必须早于提交B
,否则命令将失败,但不会报错。
但是上面的命令,提交A将不会包含在cherry pick
中。如果要包含提交A
,需要使用下面的语法:
git cherry-pick A^..B
代码冲突
执行cherry-pick
的过程中,也会有发生代码冲突的情况,这种情况下,cherry-pick
会停下来,需要让我们来决定如何继续操作。
--continue
我们将代码冲突解决后,将修改的文件重新加入暂存区(git add .)
,我们使用下面的命令,让cherry-pick
继续执行。
git cherry-pick --continue
--abort
如果代码发生冲突后,发现很难解决,需要放弃合并,回到操作前的样子,则可以使用下面的命令:
git cherry-pick --abort
--quit
发生代码冲突后,退出cherry-pick
,但是不回到操作前的样子。
git cherry-pick --quit
最后
以上用法在工作中基本就够用了,cherry-pick
还有一些其他比较高级的用法,感兴趣的小伙伴可以继续深入研究一下。
转载自:https://juejin.cn/post/7229565416003190840