如何git merge --squash以便github“网络”图显示合并

时间:2013-09-27 05:15:55

标签: git github merge

假设你有这个:

     master: o--o--o
development:        `o--o--o

我想将更改合并为一次提交(避免沿途的所有垃圾提交):

git checkout master
git merge --squash development

然后github网页显示:

     master: o--o--o---------o
development:        `o--o--o

你应该做什么,这表明了你的期望,即:

     master: o--o--o---------o
development:        `o--o--o’

1 个答案:

答案 0 :(得分:9)

对于最后一个图表,您可以使用以下命令:

git merge --no-ff
git branch -d development

master: o--o--o---------o
               `o--o--o’

你告诉git创建一个合并提交,即使合并的分支是快进的,即master的最后一次提交是合并分支的直接祖先。

请注意,“垃圾提交”不会被删除,但除非您有充分的理由,否则您应该保持历史记录的原样。压缩提交会使您难以浏览历史记录。

如果您觉得您的开发分支历史记录充满了废话,您还可以在合并之前使用交互式rebase重写它。

git checkout developement
git rebase -i master

您将能够选择,编辑,重新排序,压缩或放弃提交并重写您的分支历史记录。完成后,使用经典合并(根据需要使用或不使用--no-ff)。