我们可以将开发分支合并到git-flow中的Feature分支吗?

时间:2017-04-20 13:52:57

标签: git github merge workflow git-flow

  1. 我们可以将开发分支合并到git-flow中的功能分支吗?

  2. 如下图所示,有两个功能分支(A(红色)和B(蓝色)),由两位开发人员分配。如果B需要A中的某些代码,那么允许 A推动开发进行编码,然后B将其从开发?

  3. 合并开发分支,它没有合并但是覆盖,为什么,以及如何解决它?

1 个答案:

答案 0 :(得分:4)

1)团队可能会有所不同,因为有些人认为不必要的合并"让历史变得丑陋,但我认为将develop合并到功能分支中没有问题。如果你认为它使历史更清晰(并且还没有推动功能分支),那么另一种方法是将功能分支向前重新绑定,但这可能会破坏功能分支上的中间提交。

2)不完整的功能不应合并到developdevelop应随时准备发布。在功能分支之间干净地共享更改是棘手的(并且,在具有小故事/功能的合理敏捷方法中,通常是不必要的)。大多数方法都涉及到一些妥协。见下文。

3)我不确定你为什么会看到这种行为;可能需要有关您如何尝试合并的更多信息。您可以通过检查分支并执行类似git reset --hard HEAD^

之类的操作来撤消合并(最好是在没有合并的情况下完成此操作)

好的,如果必须,如何分享代码?好吧,如果你接受我的建议不要将A合并到develop,你可能会认为"我可以直接将A合并到B吗?" 。好吧,它比很快合并到develop更好,但意味着B无法安全地合并到develop,直到A为止(因为它会携带)部分实施A)。

如果A未被推送,那么您可以执行A的交互式变基,以将B所依赖的更改移至{{1}的开头然后将A重新绑定到具有共同更改的提交。但这可能涉及拆分提交,并且可能会创建破坏的中间状态,并且取决于未被推送的分支(或者每个人都必须从上游的rebase恢复)......所有这些都不容易做到。

另一个选择是挑选从BA的更改。这也是一种重新定位操作,但它会保留所有现有的提交(因此不必担心是否已推送)。但是,如果共享更改在提交中也有其他更改,那么它仍然不是那么容易;当将这些功能合并回B时,它可能最终会导致冲突。

到处都是,只要有可能,最好避免这种情况。如果特征B依赖于特征A,则可以在特征B上按住,直到特征A已正确合并到develop或其他东西。