从 hoftix 分支到 master 和 develop 分支的合并策略的差异

Difference in merge strategies from hoftix branches to master and develop branches

使用 git 流程注意到 hotfix 分支从 master 分支并合并回 masterdevelop

然而,将hotfix合并到develop可能会导致合并冲突,这就是为什么我的团队目前提倡将hotfix合并到master然后从 master 回来做 develop.

但我认为从 hotfixdevelop 会产生冲突的场景也会在 mergedevelop 上产生冲突,所以这里没有真正的好处.

更糟糕的是,因为他们总是在 GitHub 拉取请求中解决冲突,如果从 masterdevelop 之间存在冲突,他们将在 master 上创建一个提交在合并到 develop.

之前解决它

毕竟,这些不是问题吗?从 hotfix 合并到 masterdevelop 真的那么重要还是第二种方法同样好?

这两种方法在实践中大部分时间在功能上是相同的。

1       # last common commit
|\
| \
|  \
|   \
v    \
2     3  # master follows left side commits, develop follows right side
|\   /|
| \  .|
|  |  |
|. |  |
v/ |  |
4  |  |  # 4 merged into master from feature branch, contains 3
|  |  |
|  v  |
|  5  |  # hotfix commit 5
| /|  |
v/ |  |
6  |  |  # 6 fixes conflicts between 3 and 5
|   \ | 
|    \v 
|     A  # A also fixes conflicts between 3 and 5
 \
  \   .
   \  |
    \ |
     \v
      B # merge master with hotfix to develop

因此,您合并以在 A 或 B 中开发的可能性是 A 将包含提交 (1, 2, 3, 5),B 将包含 (1, 2, 3, 4, 5, 6). 4 或 6 中可能有任何出于某种原因在开发分支上不受欢迎的内容,但实际上我看不出那可能是什么。

假设commit 4来自develop上的一些变更(已经在develop上),那么commit 5和commit 4可能存在合并冲突。在这种特殊情况下,冲突必须在 6 和 A 中都得到解决,而合并到 B 中只能在 6 中解决这些冲突一次。两次解决冲突也有可能(略微)不同地解决它们,导致进一步以后合并冲突。