git - 由于 git squash,开发和掌握不同的 git 历史
问题描述
我们遵循 Gitflow 模式,拥有开发、发布和主分支。我们将功能分支合并到开发中。我们在发布期间从开发中签出发布分支并合并到主控中。我们已经在 github 中设置了 squash 和 merge 设置。由于壁球设置,我们遇到了情况。
假设我们在开发分支中有提交 c1、c2、c3、..c100 提交。我们从中签出发布分支,并添加了一些小的提交 d1、d2、d3。当我们将发布分支合并到 master 中时,它会将所有提交压缩到一个提交 CM1 中。现在 master 只有一个提交。由于我们在开发中也需要 d2、d2、d3,因此我们尝试合并发布分支。现在它显示了许多文件更改,因为它们具有不同的提交历史。
我们意识到在合并到主分支时我们不应该有壁球设置。现在的问题是我们如何才能让开发和主控再次同步。我想讨论哪个选项最好。我能想到一个。让我知道是否还有其他更好的选择。
- 在没有壁球设置的情况下再次将发布分支合并到 master 中。这将使开发和掌握相同。
解决方案
正如您所意识到的,在长期运行的分支上使用 squash 合并不是一个好主意。GitHub 文档解释了为什么会这样。现在,您有两种可能的选择:
- 正常执行合并。如果自壁球合并以来两侧没有太大变化,那么这可能会起作用。
- 如果两侧出现明显分歧或上述选项导致重大冲突,您可以恢复 squash 合并并再次执行合并。这可能有它自己的冲突,所以第一个选项更好。
我会尝试第一个选项,如果它看起来真的很糟糕,那么尝试第二个选项,看看它是否更好。
推荐阅读
- javascript - 当我按下滚动按钮时,如何限制骰子(3-d 类型)仅滚动三次,并且每次滚动时还需要骰子的值
- ios - 为什么UIDatePicker填充两个不同的TextFields相同的值
- node.js - NPM 安装 404 资源
- arm - HardFault exception (configurable-priority exception to HardFault)
- php - problems with sql statements
- c++ - 粒子和 OpenGL 的问题,没有绘制任何内容
- php - URL 重写删除 url 结尾
- dart - 使用嵌套在结果中的不同类型解析 json {"result": DIFFERENTS TYPES}}
- html - 使用 aria-hidden 或 role="presentation" 会提高使用辅助技术的人的导航速度吗?
- c++ - 为什么下面的程序不选择与第一个模板参数相同类型的参数?