【发布时间】:2014-01-17 04:38:36
【问题描述】:
git merge --no-commit 和 git cherry-pick --no-commit 有什么区别吗?
如果我在这两个命令之后提交,历史记录有什么不同吗?
【问题讨论】:
标签: git git-merge git-cherry-pick
git merge --no-commit 和 git cherry-pick --no-commit 有什么区别吗?
如果我在这两个命令之后提交,历史记录有什么不同吗?
【问题讨论】:
标签: git git-merge git-cherry-pick
如果你在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-merge 后提交,Git 就会添加所谓的merge commit。另一方面,当cherry-pick(ing) 提交时,git 会将这些提交引入的更改应用到工作树的顶部(两个或多个分支之间没有融合)。换句话说,提交被克隆并放在你的分支之上。
查看Git Cherry-pick vs Merge Workflow 以了解基于回购维护者实际需求的差异。
【讨论】: