如何处理git分支层次结构

时间:2013-07-25 07:12:23

标签: git github branch

我有一个git存储库,其中master分支是主要的。

我有以下方式的层次结构:

      master
        |
       core
  /     |     \
 V100  V200  V300

V100V200V300是依赖核心的不同模块。

多人将处理这些模块,并且还要从任何core分支修改V*模块。

问题是我真的不知道如何处理这种情况而不复制文件,更改为核心分支,修改它,然后从V*分支中提取更改。

有没有更好的方法来处理这些变化?或者,核心模块是否永远不会被V*分支修改?

注意: core模块无法独立测试,它只包含其他分支中使用的抽象类,接口和库。

1 个答案:

答案 0 :(得分:2)

听起来你已经把分支与维护不同模块的方式混淆了。分支应该是相同代码的版本。

例如,您可能拥有master,development和多个功能分支。您的主分支是您部署的代码。您的开发分支可能是您准备部署的代码。而您的功能分支是您未完成的新功能。

完成功能后,将其分支合并到开发分支中。准备好发布后,将开发分支合并回master并发布代码。等等就像一个循环。

通常我发现最好将单独的代码组保存在不同的存储库中。所以听起来像你想为每个V *模块购买回购。您还可以拥有Core模块的仓库。在git中,通常会有很多这样的回购。

您可以选择将Core模块作为子模块包含在其他repos中。你要做的是在主模块中创建一个目录,比如V100 / core,然后将其设置为子模块。然后,它链接到Core repo的特定提交。通过这种方式,您可以确定您的项目链接到适用于它们的子模块版本。

子模块确实有一些错综复杂和陷阱,因此他们的名字不好。我发现如果使用得当它们实际上效果很好。要了解有关它们的更多信息,请查看http://git-scm.com/book/en/Git-Tools-Submodules