git merge --no-commit与git cherry-pick --no-commit的区别

41
< p > git merge --no-commit 和 git cherry-pick --no-commit 有什么区别吗?

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

2个回答

56

如果你在git merge --no-commit之后提交,你将得到一个合并提交。而如果在git cherry-pick --no-commit之后提交,则会得到一个只有一个父节点的提交。

因此,是的,这两个命令之间有区别。

特别是如果你有类似以下内容的东西:

A -- B -- C
 \        L HEAD
  \
   -- D -- E

如果你用cherry-pick命令挑选提交E,你将不会得到提交D的修改。而如果你进行merge操作,则可以同时获取两者。


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

所以,当你在执行git-merge后提交时,Git会添加一个称为合并提交的内容。而在另一方面,当挑选(cherry-pick)提交时,git会将这些提交引入的更改应用于您的工作树顶部(没有两个或多个分支之间的融合)。换句话说,提交被克隆并放置在您的分支的顶部。

请查看Git Cherry-pick vs Merge Workflow了解基于repo维护者实际需求的差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接