48
正如标题所说,我不清楚git merge --squash
和git merge --no-commit
之间的区别。Git合并--squash和--no-commit之间的区别
据我了解git merge
的帮助页面,这两个命令会让我进入更新的工作树,在那里仍然可以编辑,然后做最后的提交(或多个提交)。
有人可以澄清这两个选项的区别吗?我什么时候使用一个而不是另一个?
正如标题所说,我不清楚git merge --squash
和git merge --no-commit
之间的区别。Git合并--squash和--no-commit之间的区别
据我了解git merge
的帮助页面,这两个命令会让我进入更新的工作树,在那里仍然可以编辑,然后做最后的提交(或多个提交)。
有人可以澄清这两个选项的区别吗?我什么时候使用一个而不是另一个?
git merge --no-commit
这就像一个正常的合并,但不会创建一个合并提交。这个提交将是一个合并提交:当你查看历史时,你的提交将显示为正常合并。
git merge --squash
这会将更改合并到工作树中而不创建合并提交。当您提交合并的更改时,它将看起来像您的分支上新的“正常”提交:没有历史合并提交。这几乎就像你在所有合并的变化中做出了挑战。
因此,合并承诺会显示历史上的情况?因为我可以编辑提交消息,我将如何看到它是一个合并提交? – quaylar 2012-03-07 10:38:46
@quaylar merge-commit并不是一个特殊的提交,只是它有多个父项。你可以通过'git log --parents'来看到父母的提交例子('git log --merges'只显示这样的提交)。 – 2012-03-07 10:57:02
@PhilippWendler所以基本上:有一个合并提交,我总是通过查看历史知道这个提交是合并的结果(分支对此合并的贡献的信息也保留了吗?)。使用--squash无法知道这个提交是合并的结果。我的理解是否正确? – quaylar 2012-03-07 11:39:00