【问题标题】:How to git merge --squash so that github "network" diagram shows the merge如何 git merge --squash 以便 github“网络”图显示合并
【发布时间】:2013-10-03 07:18:07
【问题描述】:

假设你有这个:

     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’

【问题讨论】:

  • 您可以使用git merge --no-ff 获得最后一张图。但请注意,“垃圾提交”仍然存在。
  • 还值得注意的是,“壁球合并”不是真正的合并(正如您的历史显示的那样);它确实更像是一个“壁球变基”。你可能会得到你真正想要的,首先压缩development重写历史)然后通常将结果合并到master中。

标签: git github merge


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 2016-07-26
    • 1970-01-01
    • 2017-09-15
    • 2017-03-28
    • 2021-09-28
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多