创建多个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中
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/*