【问题标题】:Git Merge with squash but keep network graphGit与壁球合并但保留网络图
【发布时间】:2018-04-02 19:01:00
【问题描述】:

假设我有开发分支和 FixBullshit 分支,并且我在 FixBullshit 中有 5 个提交,我做了一个拉取请求,但将开发与 FixBullshit 与合并 + squash 合并以使其在开发中保持为 1 个提交以使其更清晰(它是顺便说一句,最好的选择?)

事情是,在这样做之后,在 github 的网络图中,Bullshit 分支似乎退出了开发,但它从未合并,然后在开发中出现 1 次提交,但与 Bullshit 分支无关,就像它发生的那样在我的 git https://github.com/noxerr/VRHarry/network 带有分支开发和“fixSensorsinput”

我做错了什么?如何在网络上创建该链接?

【问题讨论】:

  • 我发现 GitHub 的网络图充满了错误并且不是很有用。您似乎几乎无法影响他们。如果您确实找到了一种使它们有用的方法,那将很有趣。

标签: git github merge commit


【解决方案1】:

如果你这样做了,那么你将失去分支的踪迹,因为这是 git 的工作方式

【讨论】:

    【解决方案2】:

    不确定我是否理解你。您似乎想要压缩您的提交,但同时保留您的开发提交。

    在这种情况下,您只需要创建另一个分支在与 squash 合并之前,并且不要检查它。然后你将拥有两个分支。

    【讨论】:

      【解决方案3】:

      网络图显示了 git repo 的历史,“squashing”通过压缩它来改变历史。

      Github 正在做的是获取这张图

      A--B--C--D--E
          \
           F--G--H
      

      F--G--H 压缩为单个提交W,并将其应用为

      A--B--C--D--E--W
          \
           F--G--H
      

      要按照您的建议进行操作,您可以将F--G--H 压缩成一个提交Q,然后再合并以制作类似的图表

      A--B--C--D--E--I
          \         /
           Q--------
      

      不幸的是,这种形式的 squash 合并会改变历史记录,这可能会给那些拥有旧历史记录的本地副本的人带来问题。这可能是 Github squash 合并如上所述的原因,而不是像这样.

      互联网上有很多页面like this one 介绍了挤压、变基和其他合并方法的优缺点。

      【讨论】:

        猜你喜欢
        • 2010-11-30
        • 1970-01-01
        • 1970-01-01
        • 2017-09-23
        • 2014-07-27
        • 2018-04-15
        • 2011-12-03
        • 2012-08-01
        • 1970-01-01
        相关资源
        最近更新 更多