我有一个git存储库,其中master
分支是主要的。
我有以下方式的层次结构:
master
|
core
/ | \
V100 V200 V300
V100
,V200
,V300
是依赖核心的不同模块。
多人将处理这些模块,并且还要从任何core
分支修改V*
模块。
问题是我真的不知道如何处理这种情况而不复制文件,更改为核心分支,修改它,然后从V*
分支中提取更改。
有没有更好的方法来处理这些变化?或者,核心模块是否永远不会被V*
分支修改?
注意: core
模块无法独立测试,它只包含其他分支中使用的抽象类,接口和库。
答案 0 :(得分:2)
听起来你已经把分支与维护不同模块的方式混淆了。分支应该是相同代码的版本。
例如,您可能拥有master,development和多个功能分支。您的主分支是您部署的代码。您的开发分支可能是您准备部署的代码。而您的功能分支是您未完成的新功能。
完成功能后,将其分支合并到开发分支中。准备好发布后,将开发分支合并回master并发布代码。等等就像一个循环。
通常我发现最好将单独的代码组保存在不同的存储库中。所以听起来像你想为每个V *模块购买回购。您还可以拥有Core模块的仓库。在git中,通常会有很多这样的回购。
您可以选择将Core模块作为子模块包含在其他repos中。你要做的是在主模块中创建一个目录,比如V100 / core,然后将其设置为子模块。然后,它链接到Core repo的特定提交。通过这种方式,您可以确定您的项目链接到适用于它们的子模块版本。
子模块确实有一些错综复杂和陷阱,因此他们的名字不好。我发现如果使用得当它们实际上效果很好。要了解有关它们的更多信息,请查看http://git-scm.com/book/en/Git-Tools-Submodules