求教如何构造gitrepository/branch

Seeking for advice how to structure git repository/branch

我已经阅读了各种 git 教程,但对于如何使用 git 存储库和分支仍然存在一些悬而未决的问题。

这是我的情况:

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

     A
     |
     B
  / / \ \       
 C  D  F G

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

通过阅读教程,我学到了很多东西。但是,对于我的 repository/branch 结构应该是什么样子,我仍然有一个基本问题。这是我的问题:

任何帮助都会很棒! 谢谢

目前尚不清楚 A 和 B 之间的切割有多干净。您可以决定将它们全部放在一个存储库中并将目录分开,或者将它们放在单独的存储库中并使 A 成为 B 的子模块。这在一定程度上取决于您接收这些更新的方式。

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

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