如何让Git知道单个分支中的某些文件是相互分支的

如何让Git知道单个分支中的某些文件是相互分支的,git,git-submodules,git-merge,git-branch,Git,Git Submodules,Git Merge,Git Branch,我们有一个具有不同主题的产品,它们存储在master branch中,如下所示 themes/theme_one/... themes/theme_two/... etc 每个文件夹都有自己的结构,并保存CSS和HTML文件。有时,我们的一位客户想要定制主题。由于我们有各种各样的主题,通常有一个主题与客户的需求非常相似,只需要进行表面上的更改。因此,我通常要做的是创建一个新的分支机构客户,切换到该分支机构,复制选择的主题(例如,themes/theme\u two/->themes/custo

我们有一个具有不同主题的产品,它们存储在master branch中,如下所示

themes/theme_one/...
themes/theme_two/...
etc
每个文件夹都有自己的结构,并保存CSS和HTML文件。有时,我们的一位客户想要定制主题。由于我们有各种各样的主题,通常有一个主题与客户的需求非常相似,只需要进行表面上的更改。因此,我通常要做的是创建一个新的分支机构客户,切换到该分支机构,复制选择的主题(例如,themes/theme\u two/->themes/custom\u theme/)并修改它,应用客户需要的更改。有时变化很小,有时变化更大,但最终的主题仍然大量继承自其父主题

最有效的组织方式是什么?假设我们在themes/theme_two/中发现了一些随机错误,并应用了修复程序。theme是一种告诉Git themes/custom\u theme/实际上类似于themes/theme\u two/的分支的方式,所有的更改也应该在那里重新应用(即使它们仍然存在于各自分支的上下文中-master和new\u customer)


不久前,我正在读一本关于Git的书,我隐约记得一些关于子模块的事情。这是解决此类问题的经典方法吗?如果是,它将如何工作?我会这样做吗?为主题设置一个单独的回购协议(可能是每个主题的分支),然后在主产品主目录中创建主题/../文件夹,并将它们链接到各自的主题分支。然后,当我需要创建自定义主题时,我将从main products的master创建一个some_客户分支,从另一个回购协议的theme_two分支创建一个分支,并将其作为子模块加载到新客户分支的themes/custom_theme/中。

我认为最好的方法是按主题进行分支,并始终将theme_two合并到custom_theme中。据我所知,没有办法合并git目录层次结构的一部分——也没有办法记录这样的部分合并