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
创建多个git分支的联合分支_Git_Union_Symlink - Fatal编程技术网

创建多个git分支的联合分支

创建多个git分支的联合分支,git,union,symlink,Git,Union,Symlink,我希望能够在现有分支的基础上分层其他分支,并独立修改这些分支。例如,这将有助于将不同子项目的二进制文件统一到同一bin目录中。通常,给定的文件只存在于一个层中 理想情况下,我想我会使用unionfs来实现这一点,但它必须以某种方式提供一种访问各种.git目录的方法,这些目录是同一根目录的所有子目录。不管怎样,我认为unionfs实际上不起作用?因此,最好只维护一组从repo根到包含层的其他存储库的符号链接 我正在考虑这样做: 将每个“层”保存在单独的存储库中 在主repo中维护到每个应该分层的

我希望能够在现有分支的基础上分层其他分支,并独立修改这些分支。例如,这将有助于将不同子项目的二进制文件统一到同一
bin
目录中。通常,给定的文件只存在于一个层中

理想情况下,我想我会使用unionfs来实现这一点,但它必须以某种方式提供一种访问各种.git目录的方法,这些目录是同一根目录的所有子目录。不管怎样,我认为unionfs实际上不起作用?因此,最好只维护一组从repo根到包含层的其他存储库的符号链接

我正在考虑这样做:

  • 将每个“层”保存在单独的存储库中
  • 在主repo中维护到每个应该分层的文件的符号链接
  • 将符号链接添加到master.gitignore,以便在切换分支时不会删除它们
  • 与Windows完全不兼容,以便能够在根存储库中的文件位置编辑文件。IE使用符号链接,而不仅仅是将文件复制到主repo中
跟踪每个层的源提交ID是有意义的,例如,在后续修订中从该层删除的文件可以从源repo中删除其符号链接,并从主repo的.gitignore文件中删除

看起来这样一个系统最终的工作方式有点像
git子模块
,关键区别在于子模块将共同驻留在存储库的同一根级别

我想知道是否已经有一个实用程序来管理这个?我曾研究过使用stg(stackedgit)来实现这种结构,但它似乎并不适合

我希望能够在现有分支的基础上分层其他分支,并独立修改这些分支

这就是子模块的确切用途

诀窍是:您希望在主项目中的一个公共路径中声明多个子模块(如
/bin

这是不可能的,至少不是以跨平台的方式,因此只剩下一个问题:“这种布局绝对必要吗?”。
例如,将所有二进制文件放在一个目录中更像是一个部署问题,而不是源代码管理问题。

也就是说,您应该能够使用各自目录中的二进制文件进行开发,同时在一个目录中使用二进制文件测试您部署的应用程序。

如果想法是有两个或多个分支处理单独的更改,但有一个分支将它们包含在一起进行测试,您可能希望查看GIT post-commit/post-update钩子,以将各种分支自动合并到混合分支中


如果不是为了测试,那么我想考虑重新构造设置方式,可能会将内容分解为子模块。

您正在寻找git子树合并,那么本页将准确地列出您正在寻找的内容,但在web上下文中,只需使用您自己的目录结构,但这些示例


我真的很惊讶有更多的人支持子模块,我也需要这样做。退房

它允许您在分支上使用glob,并执行八达通合并(一次合并多个分支)。例如:


嗯,如果分支真的没有任何共同的文件,合并是很简单的,所以你的“联合”分支可以通过(八达通!)合并所有组件分支来构建,是吗?我不想合并它们。我希望它们作为单独的组件存在于同一目录结构中。理想情况下,我可以执行类似于
git group of branchs checkout group in the group
的操作,而无需更改在其他分支组中选择的分支。在某些情况下,例如在已部署系统上编辑解释代码的情况下,这不一定是一个选项。我的直接目标是能够编辑My.vim目录中的各种模块,而无需a)将所有内容保存在一个repo中| | b)切换到不同的运行环境并中断我的工作流程,以便花费10分钟进行修复或添加功能。vim在同一目录集中混合来自不同模块(也称为vimscripts)的组件的倾向上可能有点非典型,但这是系统以这种方式工作的一个例子。@Intuite:Understand。这是一个有趣的案例,但我没有立即的解决方案。
git octopus features/*