git merge --no-commit
和有什么区别git cherry-pick --no-commit
吗?
如果我在这两个命令之后提交,历史上有什么不同吗?
git merge --no-commit
和有什么区别git cherry-pick --no-commit
吗?
如果我在这两个命令之后提交,历史上有什么不同吗?
如果你在 之后提交git merge --no-commit
,你实际上会得到一个合并提交。而在 a 之后,git cherry-pick --no-commit
您将获得与单亲的提交。
因此,是的,这两个命令之间存在差异。
特别是如果你有类似的东西
A -- B -- C
\ L HEAD
\
-- D -- E
如果你cherry-pick
commit E
,你将不会得到 commit 的修改D
。而如果你merge
,你会得到两者。
虽然git-merge用于将两个或多个开发历史连接在一起,但git-cherry-pick用于应用由一些现有提交引入的更改。
因此,一旦您在执行git-merge后提交,Git 将添加所谓的合并提交。另一方面,当cherry-pick(ing)提交时,git 会将这些提交引入的更改应用到工作树的顶部(两个或多个分支之间没有融合)。换句话说,提交被克隆并放在你的分支之上。
看看Git Cherry-pick vs Merge Workflow以了解基于 repo 维护者实际需求的差异。