40

git merge --no-commit和有什么区别git cherry-pick --no-commit吗?

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

4

2 回答 2

54

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

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

特别是如果你有类似的东西

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

如果你cherry-pickcommit E,你将不会得到 commit 的修改D。而如果你merge,你会得到两者。

于 2013-12-30T09:54:09.950 回答
9

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

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

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

于 2013-12-30T10:00:20.277 回答