7

假设你有这个:

     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’
4

1 回答 1

11

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

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)。

于 2013-09-27T07:08:03.577 回答