Git cherry-pick可以选择指定的若干commit进行合并

cherry-pick与merge、bease之间的最大区别是,cherry-pick可以选择指定的若干commit进行合并, 而merge,rebase则是一次性的将连续多个commit合并到目标分支上。

用法

切到目标分支

git checkout branch-which-your-want-apply-commit

选择记录要合并的commit的Hash值,多个commit需要按照它们的创建提交的顺序排列,并用空格分割开来。

git cherry-pick <commit-hash>

选择合并多个连接的commit,比如合并commit A到commit B所有提交,A必须早于B提交,且不包含commit A。

git cherry-pick A..B

包含commit A的提交方式

git cherry-pick A^..B

配置项

git cherry-pick常用配置项详解

-e, --edit 打开外部编辑器,编辑提交信息

-n, --no-commit 只更新工作区和暂存区,不产生新的提交

-x 在提交信息的末尾追加一行(cherry picked from commit ...),方便以后查到这个提交是如何产生的

-s, --signoff 在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。

-m parent-number, --mainline parent-number 配置项告诉 Git,应该采用哪个分支的变动

代码冲突

  1. --continue

用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

$ git cherry-pick --continue
  1. --abort

发生代码冲突后,放弃合并,回到操作前的样子。

  1. --quit

发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。

参考