1

我刚刚开始为我的项目未完成的功能创建主题分支,由 Git 管理。它们都是非常独立的,一个主题分支不直接与另一个主题分支相关。然而,所有分支都有一些共同点,master分支是系统的核心,主题分支只是扩展了master分支的功能。

如果我理解正确,如果我在主分支中做一些影响(m)任何主题分支的事情(例如,更改用于在核心和各个功能之间进行通信的 API),那么更改不会传播到主题分支自动,以便可以相应地固定分支。这些更改需要手动合并或挑选到其他分支中。

我知道使用子模块可以实现这一点。然而,子模块导致主项目和潜在功能项目之间的分离过多,主要是因为这些功能不能自我维持。他们依靠核心。

所以,我正在寻找某种方法来说明某些文件/目录对于某个分支是唯一的,其他所有内容都来自主分支。缺少一个更好的类比,用 Photoshop 术语来说,我希望master是背景层,每个主题分支都是在它上面的一个部分透明的图像层,具有一些独特的内容。

4

2 回答 2

1

Git 不支持“组合”或“配置继承”的概念,如“灵活与静态分支”问题中所述。只有合并允许您“组合”所需的确切文件集。

子模块功能可帮助您识别一组连贯的文件,这些文件必须有自己的生命周期并按照自己的节奏进行标记。这不是您的功能的情况。

您的方法应该保持“基于系统”的方法,您可以在其中开发、标记和合并所有系统。如果主分支上发生了一些变化,则需要在功能分支上进行合并。
如果功能涉及的文件集与在主分支中修改的文件不同,那么合并将是微不足道的。如果没有,您可以按照mateusza 的建议,使用中间分支来解决冲突并评估这种合并的结果,同时保持特性分支不变。

于 2009-05-31T21:07:49.000 回答
0

假设您有分支 master 和一堆分支:feature1、feature2、feature3 ......

$ git checkout feature1
$ git branch master-with-feature1
$ git checkout master-with-feature1
$ git merge master

每当您对masterfeature1进行任何更改时,您都可以签出到master-with-feature1并合并它们。

于 2009-05-31T18:42:45.407 回答