Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 子模块和分支之间的中间地带?_Git_Branch_Git Submodules - Fatal编程技术网

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

Git 子模块和分支之间的中间地带?,git,branch,git-submodules,Git,Branch,Git Submodules,我刚刚开始为我的项目未完成的特性创建主题分支,由Git管理。它们都是非常独立的,一个主题分支与另一个主题分支没有直接关系。然而,所有分支都有一些共同点,主分支是系统的核心,主题分支只是扩展了主分支中的功能 如果我理解正确,如果我在主分支中做了一些影响(m)任何主题分支(例如,更改用于在核心和单个功能之间通信的API)的事情,那么更改不会自动传播到主题分支,因此可以相应地修复分支。需要手动合并这些更改,或将其挑选到其他分支中 我知道使用子模块可以实现这一点。然而,子模块导致了主项目和潜在功能项目之

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

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

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


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

假设您有分支master和一系列分支:feature1、feature2、feature3

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

无论何时对主控形状或特征1进行任何更改,您都可以签出到带有特征1的主控形状并合并它们。

假设您有分支主控形状和分支束:特征1、特征2、特征3

$ git checkout feature1
$ git branch master-with-feature1
$ git checkout master-with-feature1
$ git merge master
无论何时对master或feature1进行任何更改,您都可以签出到master-with-feature1并合并它们。

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

子模块功能可帮助您识别一组连贯的文件,这些文件必须有自己的生命周期,并以自己的速度进行标记。你的特征并非如此

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

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

子模块功能可帮助您识别一组连贯的文件,这些文件必须有自己的生命周期,并以自己的速度进行标记。你的特征并非如此

您的方法应该保持“一个”,即开发、标记和合并所有系统。如果某些内容在主分支上发生变化,则需要在功能分支上进行合并。

如果这些特性涉及一组与在主分支中修改的文件不同的文件,那么这种合并将是微不足道的。如果没有,您可以使用一个中间分支来解决冲突并评估合并的结果,同时保持功能分支不变。

我想我记得看到过这个分支的副本,但我找不到它。我想我记得看到过这个分支的副本,但我找不到它。