寻求建议如何构建git存储库/分支

时间:2016-02-03 23:05:45

标签: git merge repository branch

我已经阅读了各种git教程,但仍然有一些关于git存储库&应该使用分支。

以下是我的情况:

我有一个由外部合作伙伴维护的代码库“A”,我每隔几个月就会收到一次源代码更新。基于代码库“A”,我已经构建了另一个产品“B”,这是我的核心产品。然后,我使用产品B作为我的客户的基础。每个客户都有自己的小调整。因此,我也为每个客户维护单独的代码库。在视觉上它看起来像这样:

     A
     |
     B
  / / \ \       
 C  D  F G

现在问题:)每次在代码库“A”或“B”上发生更改时,我都面临着将所有更改合并到其他代码库的艰巨任务。我正在寻找一种方法如何利用Git为我简化此代码合并任务。

通过阅读教程,我学到了很多东西。但是,我仍然有一个关于我的存储库/分支结构应该是什么样子的基本问题。以下是我的问题:

  • 我是否需要为每个代码库设置存储库?
    • 如果是,我如何在不同的存储库之间执行代码合并?
  • 我是否应该为每个代码库创建一个包含多个分支的存储库?

    • 我的主要分支应该是什么? A还是B?
    • 如何进行合并?使用 rebase
    • 是分支存储在单独的文件夹中吗?
  • 还有另一种(更好的)解决问题的方法吗?

任何帮助都会很棒! 感谢

1 个答案:

答案 0 :(得分:0)

不清楚A和B之间的切割是多么干净。您可以决定将所有内容放在一个存储库中并将目录分开,或者将它们放在单独的存储库中,并使A成为B的子模块。这取决于您如何接收这些更新。

至于分支机构;您可以为B的每个变体分配一个分支,然后每当您对其他代码库也应该具有B的更新时,您只需git merge B进入其他分支。当你似乎为每个代码库修改B(而不是扩展它)时,将B作为子模块在这里不起作用。

关于分支的单独文件夹:不,不是直接。当您查看一个分支时,其他代码在您的工作目录中不可用。您必须检查另一个分支以切换到其他代码库,更改工作目录的内容。但是,如果您发现自己切换了很多,可以设置multiple working trees。这虽然是一个实验性的功能,当你还在使用子模块时会有一些错误。您还可以考虑简单地维护同一个存储库的多个实例,接受开销......或者只在需要时在分支之间切换。