我们目前正在使用 Git Flow 来处理对我们的软件发布版本以及内部开发版本应用修补程序的情况。这个过程运行得很好 - 编码人员提前决定问题是否需要尽快出现在实时版本中,并将在提交代码之前创建一个修补程序分支,并将其合并到开发和主控中。
但是,有时修复某些问题的提交会成为一个大问题,我们希望在实时主分支上解决这个问题。我们现在如何正确地做到这一点?
目前,我们正在将相关提交挑选到我们正在维护的 master 的悬空分支中,认为一旦它平静下来,我们将进行一个小补丁,并使 master 与开发保持同步。
我的理解是,当一个人尝试合并到开发中以发布功能时,对像 master 这样的分支的择优提交最终会导致一些痛苦的合并冲突,不是吗?
但是,有时修复某些问题的提交结果是 这是一个大问题,我们希望在实时主分支上解决这个问题。我们该怎么办 现在正确吗?
--> 无论出于何种原因,切勿直接提交到
master
分支,即使开发团队处于紧急状态。
遵循的最佳实践
只需要几秒钟就可以派生一个新的(热修复)分支,只需几秒钟即可将热修复分支合并回
master
分支。在合并回 master
分支之前,您需要修改、提交、再次提交、单元测试、集成测试等。
来源:https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
并看到一篇众所周知的帖子:http://nvie.com/posts/a-successful-git-branching-model/
您描述了我们在过渡到 GIT 时遇到的一个问题。 Git-flow 的规则是您从修补程序分支合并以分别开发和掌握。
我们在这样做时遇到的问题是,master 和 dev 都会分别获得 2 个不同的代码修复,因此当需要从开发合并到 master 时,master 会抱怨存在合并冲突,因为文件在两个分支中都发生了更改。您可能会认为它会发现它们在两者中是相同的更改,但是查看提交文本并意识到它们是同一件事的过程并不那么复杂。
我们还遇到了一个问题,即修补程序分支的代码更改没有进入开发分支。然后我们将在没有这种更改的情况下进行开发,当需要发布版本时,我们基本上是回滚,因为它不存在于开发分支中。当客户提醒您在下一个版本之后它不再工作时,请准备好进行大量咒骂和搜寻以发现代码更改!
因此,为了解决这些问题,我们将该规则更改为始终首先合并以开发,然后从该 PR 中挑选(或合并)以合并到 master 中。现在,两个分支都知道了这一更改,并且合并 ID 从一个分支到下一个分支都是相关的。
规则更改后,我们不再需要去寻找回滚的代码,并且因为 PR 已经被合并和关联,所以代码时不再出现合并问题。在发布时,当开发代码合并到主控时,不存在合并冲突。代码始终通过分支层次结构向一个方向合并。
我希望这对某人有帮助! 谢谢!