git merge --no-commit vs git cherry-pick --no-commit

时间:2013-12-30 09:49:51

标签: git git-merge git-cherry-pick

git merge --no-commitgit cherry-pick --no-commit之间有什么区别吗?

如果我在这两个命令之后提交,历史上有什么不同吗?

2 个答案:

答案 0 :(得分:45)

如果您在git merge --no-commit之后提交,您实际上将获得合并提交。而在git cherry-pick --no-commit之后,你将获得一个单亲的提交。

因此,是的,这两个命令之间存在差异。

特别是如果你有像

这样的东西
A -- B -- C
 \        L HEAD
  \
   -- D -- E

如果您cherry-pick提交E,则不会修改提交D。然而,如果你merge,你将得到两者。

答案 1 :(得分:9)

虽然git-merge用于将两个或多个开发历史记录连接在一起,但git-cherry-pick用于应用某些现有提交引入的更改。

那么,一旦你在执行git-merge后提交,Git会添加名为merge commit的内容。另一方面,当cherry-pick(ing)提交时,git会将这些提交引入的更改应用到工作树的顶部(两个或多个分支之间没有融合)。换句话说,Commits被克隆并放在你的分支之上。

根据repo维护者的实际需要,看一下Git Cherry-pick vs Merge Workflow来解决差异。