代码之家  ›  专栏  ›  技术社区  ›  Henrik Paul

子模块和分支之间的中间地带?

  •  1
  • Henrik Paul  · 技术社区  · 16 年前

    我刚刚开始为我的项目的未完成特性创建主题分支,由Git管理。它们都是非常独立的,这样一个主题分支就不会直接与另一个主题分支相关。但是,所有分支都有一些共同点,即主分支,它是系统的核心,主题分支只是扩展了主分支中的特性。

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

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

    所以,我要寻找的是某种方法来说明某些文件/目录对于某个分支是唯一的,其他的都来自于一个主分支。缺乏更好的类比,用photoshop术语来说,我想 主人 作为背景层,每一个主题分支都将是一个部分透明的图像层,上面有一些独特的内容。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Community CDub    8 年前

    Git不支持“组合”或“配置继承”的概念,如问题中所述。 Flexible vs static branching “。只有合并才允许您“组合”所需的确切文件集。

    子模块特性帮助您识别一个连贯的文件集,该文件集必须有自己的生命周期,并以自己的速度进行标记。这不是您的功能的情况。

    你的方法应该是 system-based “首先,开发、标记和合并所有系统。如果某个东西在主分支上发展,那么它需要在特性分支上合并。
    如果特性涉及到一组不同的文件,而这些文件是在主分支中修改的,那么合并将是微不足道的。如果没有,你可以跟着 mateusza's suggestion ,使用中间分支来解决冲突并评估此类合并的结果,同时保持特征分支不变。

        2
  •  0
  •   mateusza    16 年前

    假设你有分支大师和一堆分支:特征1,特征2,特征3…

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

    任何时候对 主人 特征1 您可以结账到 主功能1 并合并它们。