首页 > 解决方案 > 由于 git squash,开发和掌握不同的 git 历史

问题描述

我们遵循 Gitflow 模式,拥有开发、发布和主分支。我们将功能分支合并到开发中。我们在发布期间从开发中签出发布分支并合并到主控中。我们已经在 github 中设置了 squash 和 merge 设置。由于壁球设置,我们遇到了情况。

假设我们在开发分支中有提交 c1、c2、c3、..c100 提交。我们从中签出发布分支,并添加了一些小的提交 d1、d2、d3。当我们将发布分支合并到 master 中时,它会将所有提交压缩到一个提交 CM1 中。现在 master 只有一个提交。由于我们在开发中也需要 d2、d2、d3,因此我们尝试合并发布分支。现在它显示了许多文件更改,因为它们具有不同的提交历史。

我们意识到在合并到主分支时我们不应该有壁球设置。现在的问题是我们如何才能让开发和主控再次同步。我想讨论哪个选项最好。我能想到一个。让我知道是否还有其他更好的选择。

  1. 在没有壁球设置的情况下再次将发布分支合并到 master 中。这将使开发和掌握相同。

标签: gitgit-squash

解决方案


正如您所意识到的,在长期运行的分支上使用 squash 合并不是一个好主意。GitHub 文档解释了为什么会这样。现在,您有两种可能的选择:

  1. 正常执行合并。如果自壁球合并以来两侧没有太大变化,那么这可能会起作用。
  2. 如果两侧出现明显分歧或上述选项导致重大冲突,您可以恢复 squash 合并并再次执行合并。这可能有它自己的冲突,所以第一个选项更好。

我会尝试第一个选项,如果它看起来真的很糟糕,那么尝试第二个选项,看看它是否更好。


推荐阅读