假设你有这个:
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’
答案 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)。