git 教程 --git cherry-pick 命令

简介
在 git 管理的工程中,不可避免的存在多个分支,比如流行的 gitflow 就划分为很多的分支,那么就会有代码的合并。一般代码的合并分为两种:一种是整个分支的合并,一个是挑选部分的 commit 来合并。本文介绍的就是挑选部分的 commit 来提交的指令 git cherry-pick。

git cherry-pick 基础用法
挑选一个 commit-id 合并
注意:合并过来的 commit-id 将会变掉,产生一个新的 commit-id,跟原来的不在相同
挑选多个 commit-id 合并
挑选连续的多个 commit-id 合并
该指令是将从 commit-idA 开始到 commit-idB 之间的所有 commit-id 提交记录都合并过来,需要注意的是,commit-idA 必须比 commit-idB 提前提交,也就是说在被挑选的分支上,先有的 commit-idA,然后才有的 commit-idB
git cherry-pick 高级用法
使用上面的指令基本上可以玩转很大部分的场景,但是总有一些我们预想不到或者相对不是很丝滑的场景
合并冲突
在实际合并的过程中,总有一些冲突的情况,遇到这些情况下,该如何使用 cherry-pick 的组合命令来解决问题?
首先在使用 cherry-pick 时,如果遇到了代码冲突,其实合并过程会停止,需要使用其他的方式来继续对应的操作
继续合并--continue
第一步:需要合并人解决对应的冲突文件,然后提交到暂存区
第二步:使用下面的命令继续执行

放弃合并,回归原始状态--abort
使用当前的指令,合并的动作暂停,并且回归到操作前的样子

放弃合并,保留状态 --quit
使用当前的指令,会保留车祸现场,退出 cherry-pick

联合使用的命令
-e,--edit
使用当前指令,会打开编辑器,让用户编写信息
-n,--no-commit
只更新工作区和暂存区,不产生新的提交
-x
在提交信息的末尾追加一行(cherry picked from commit ...),说明这个提交是如何来的
版权声明: 本文为 InfoQ 作者【生之欢愉,时间同行】的原创文章。
原文链接:【http://xie.infoq.cn/article/549b5199baebcb91e8c218680】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论