git功能分支工作流程

时间:2013-01-25 20:19:36

标签: git workflow branch release

我正在努力实施Adam Dymitruk所描述的工作流程(http://dymitruk.com/blog/2012/02/05/branch-per-feature/)。

我喜欢这种方法的是功能分支的独立性。此分支中仅存在与该功能相关的代码。在sprint期间,可以根据不同的功能分支自由组成发布分支。亚当已经回答了一些问题,但我正在努力解决一些问题。

根据我的发现,发布和集成(dev)分支长时间运行,必要时可以重置? Dev不断从其功能分支合并到集成分支。已完成的功能将合并到发布分支。

  • 由于发布和集成分支是共享的(向上推),当它们被重置时会发生什么?其他开发者应如何处理这个?当您想要删除某个功能时,应该重新组合发布分支。你是否需要首先删除遥控器上的旧版本分支,并且其他开发人员是否还需要先删除其发布分支?这看起来很麻烦。

  • 最好不要长时间运行发布分支,而是创建一大堆不同的分支?

所以基本上,如何自由地重新组合一个分支(从而重写历史),可以在开发者之间共享这个分支?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您要使用此工作流程,我可以推荐Gerrit吗?

如果您使用这样的网守,将特定功能与集成分支合并的结果会在合并之前进行测试。因此,您只需要“回滚”集成分支。通过代码审查和验证的功能后来被丢弃。在这种情况下,使用git revert是合适的 - 因此集成分支实际上不会向后移动,它只是获得“反向”提交以删除该功能。

发布分支可以以相同的方式处理事情。

另一种选择是为每个版本/功能分支设置不同的名称。当您需要删除某些内容时,您需要创建一个新的integration-201301分支并停止处理旧分支。其他开发者可以在闲暇时删除过去分支的副本。由于与旧的分支相同的分支减去一个特征是一个具有不同名称的全新组合,因此不需要重写历史记录。