< p > git merge --no-commit 和 git cherry-pick --no-commit 有什么区别吗?
如果我在这两个命令之后提交,历史记录会有什么不同吗?
如果我在这两个命令之后提交,历史记录会有什么不同吗?
如果你在git merge --no-commit
之后提交,你将得到一个合并提交。而如果在git cherry-pick --no-commit
之后提交,则会得到一个只有一个父节点的提交。
因此,是的,这两个命令之间有区别。
特别是如果你有类似以下内容的东西:
A -- B -- C
\ L HEAD
\
-- D -- E
如果你用cherry-pick
命令挑选提交E
,你将不会得到提交D
的修改。而如果你进行merge
操作,则可以同时获取两者。
所以,当你在执行git-merge后提交时,Git会添加一个称为合并提交的内容。而在另一方面,当挑选(cherry-pick)提交时,git会将这些提交引入的更改应用于您的工作树顶部(没有两个或多个分支之间的融合)。换句话说,提交被克隆并放置在您的分支的顶部。
请查看Git Cherry-pick vs Merge Workflow了解基于repo维护者实际需求的差异。