【发布时间】:2012-03-24 20:36:44
【问题描述】:
正如标题所说,我不太清楚git merge --squash 和git merge --no-commit 之间的区别。
据我了解git merge 的帮助页面,这两个命令都会将我留在更新的工作树中,在那里仍然可以编辑然后进行最终提交(或多次提交)。
有人可以澄清这两个选项的区别吗?我什么时候可以用一个代替另一个?
【问题讨论】:
正如标题所说,我不太清楚git merge --squash 和git merge --no-commit 之间的区别。
据我了解git merge 的帮助页面,这两个命令都会将我留在更新的工作树中,在那里仍然可以编辑然后进行最终提交(或多次提交)。
有人可以澄清这两个选项的区别吗?我什么时候可以用一个代替另一个?
【问题讨论】:
git merge --no-commit
这就像普通的合并,但不会创建合并提交。此提交将是合并提交:当您查看历史记录时,您的提交将显示为正常合并。
git merge --squash
这会将更改合并到您的工作树中,而无需创建合并提交。当您提交合并的更改时,它看起来就像您的分支上的一个新的“正常”提交:在历史记录中没有合并提交。这几乎就像您对所有合并的更改进行了挑选。
【讨论】:
git log --parents(而 git log --merges 仅显示此类提交)。