我刚刚为Git管理的项目未完成的功能创建主题分支。它们都是以这种方式非常自包含的,一个主题分支与另一个主题分支没有直接关系。但是,所有分支都有一些共同点,即主分支,它是系统的核心,主题分支只是扩展主分支中的功能。
如果我理解正确,如果我在主分支中做了一些影响(m)任何主题分支的事情(比如,更改用于在核心和各个功能之间进行通信的API),那么变化不会传播到主题自动分支,以便相应地修改分支。这些更改需要手动合并或挑选到其他分支中。
据我所知,使用子模块可以实现这一目标。然而,子模块导致主项目和可能的特征项目之间的过多分离,主要是因为这些特征不能自我维持。他们依靠核心。
所以,我正在寻找的是某种方法,说某些文件/目录对于某个分支是唯一的,其他一切都来自主分支。缺乏一个更好的类比,用Photoshop术语说,我希望 master 成为背景层,每个主题分支都是一个部分透明的图像层,上面有一些独特的内容。 / p>
答案 0 :(得分:1)
Git不支持“组合”或“配置继承”的概念,如问题“Flexible vs static branching”中所述。只有合并才允许您“组合”所需的确切文件集。
子模块功能可帮助您识别一组连贯的文件,该文件必须具有自己的生命周期并按照自己的节奏进行标记。这不是你的功能。
您的方法应保持为“system-based”,您可以在其中开发,标记和合并所有系统。如果在主分支上发生了某些变化,则需要在功能分支上进行合并 如果这些功能涉及与主分支中修改的文件不同的文件集,则该合并将是微不足道的。如果没有,您可以按照mateusza's suggestion,使用中间分支来解决冲突并评估此类合并的结果,同时保持功能分支不受影响。
答案 1 :(得分:0)
假设你有分支主人和一堆分支:feature1,feature2,feature3 ......
$ git checkout feature1
$ git branch master-with-feature1
$ git checkout master-with-feature1
$ git merge master
每当您对主或 feature1 进行任何更改时,您都可以结帐 master-with-feature1 并合并它们。