【发布时间】:2019-02-28 09:51:46
【问题描述】:
场景如下。我将使用 t1,t2,t3 等来表示不同的时间:
我有两个分支来代表我的环境 DEV 分支,MASTER 分支。
t1:我从 MASTER 创建了一个 Feature_001 分支
t2:我在 Feature_001 分支中添加了提交,并将我的代码合并到 DEV 中并推送它。
t3:由于某种原因,我的经理告诉我停止 Feature_001 分支的开发
t4:一个月过去了。我的同事 Clair 从 MASTER 创建了一个 Feature_002 分支。
t5:Clair 在 Feature_002 分支中添加了提交,并试图将她的代码合并到 DEV 分支中并推送它。然而,当她推动时,冲突出现了。
t6:然后 Clair 将 DEV 分支中的更改合并到她的 Feature_002 分支中(我的问题发生在这一刻)。她做了一个新的提交来解决 Feature_002 分支中的冲突。之后,Clair 将她的代码合并到 DEV 中并推送。
t7:经过测试,Clair 的经理说现在可以合并到 MASTER 分支。因此,Clair 将 Feature_002 分支合并到 MASTER 分支中。
t8:虽然 Clair 开发的 Feature_002 在生产中运行,但 Feature_001 也无意中出现在生产中,因为 Feature_002 分支曾经将 DEV 的代码合并到自身以解决冲突。我们的经理吓了一跳,开始质疑谁敢让Feature_001投产!?
t9:永远开会讨论发生的事情......
如果你对场景把握得好,你会发现由于特性分支之间的冲突,在Clair从DEV拉取代码后,Feature_002分支会包含Feature_001分支的变化。
我的问题是如何保持两个功能分支独立,同时使我们能够解决它们之间的冲突?
非常感谢任何反馈和讨论。
编辑 20180925:
我想稍微调整一下情况。 Feature_001 分支可能是不需要的,或者只是长期处于开发状态。让我们让它在很长一段时间内处于开发状态,而 Feature_002 首先经过测试并快速合并到 MASTER 中。但是,现在,当我们不希望 Feature_001 投入生产时,MASTER 分支再次具有 Feature_001 和 Feature_002 更改。
【问题讨论】:
标签: git branching-and-merging git-flow feature-branch