Git merge --squash和--no-commit之间的差异

时间:2012-03-07 10:08:07

标签: git merge squash

正如标题所说,我对git merge --squashgit merge --no-commit之间的差异并不十分清楚。

据我了解git merge的帮助页面,这两个命令都会让我进入更新的工作树,在那里仍然可以编辑然后进行最终提交(或多次提交)。

有人可以澄清这两个选项的不同之处吗?我何时会使用一个而不是另一个?

1 个答案:

答案 0 :(得分:75)

git merge --no-commit

这就像普通合并一样,但不会创建合并提交。此提交将是合并提交:当您查看历史记录时,您的提交将显示为正常合并。

git merge --squash

这会将更改合并到您的工作树中,而不会创建合并提交。当您提交合并的更改时,它将看起来像您的分支上的新“正常”提交:在历史记录中没有合并提交。这几乎就像你对所有合并的变化做了一个挑选。