由于 git 壁球,开发和掌握的不同 git 历史

different git history in develop and master due to git squash

我们遵循 Gitflow 模式,有 develop、release 和 master 分支。我们将功能分支合并到开发中。我们在发布期间从 develop 签出发布分支并合并到 master 中。我们在 github 中设置了压缩和合并设置。 由于壁球设置,我们遇到了一种情况。

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

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

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

如您所知,在 long-running 分支上使用挤压合并不是一个好主意。 GitHub documentation 解释了这是为什么。现在,您有两个可能的选择要考虑:

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

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