让有:
有不同的存储库 repoA、repoB 和 repoC,每个都遵循相同的目录布局原则,它们将合并到第三个 repoM 的工作目录(“主”项目)中。
repoM 有一个非典型的设置(--work-dir 和--git-dir 是分开的)。repo[AC] 被克隆为裸机,它们被设置为core.bare = false
and core.worktree=<--work-dir-of-repoM>
。
要求:
我需要始终对 repoM 的工作目录中所有文件的历史有一个概述,这可能源于 repo[AC]。使用这种方法,我会丢失所有这些信息。
选择:
我一直在考虑改用 git-subtree ( git version 1.7.11.2
,所以它已经内置了),让 repo[AC] 裸露,然后
git pull -s subtree
,或git subtree ...
使用子树拉策略,我丢失了合并冲突的历史记录(git blame
这样说)。
我以前从未使用过子树,但据我了解,无法将 repo[AC] 中的文件合并到 repoM 的工作目录中,这些文件必须放入 repo[AC] 的子目录中。这绝对不是我需要的。为什么?由于以下...
问题陈述:
您有不同的 git 存储库,每个存储库都包含不同的文件集,通常是配置文件和一些 shell 脚本。您希望将所有这些存储库中的所有内容都放在$HOME
(即<--work-dir-of-repoM>
)目录中。您应该能够随时查看每个文件的来源、编辑、提交并将更改推送到每个文件的origin
. 你已经猜到了,它有点像vundle,但它适用于任何程序的任何类型的配置,而不仅仅是vim bundles。如果发生冲突,应该能够追踪同一文件的哪两个作者需要相互联系并达成交易(如果需要达成交易)。
这是针对我正在尝试使原型工作的开源项目,因此非常感谢任何帮助。对于以类似方式执行此操作的现有项目的想法也受到高度赞赏。
注意: “主目录”不一定是$HOME
,我用它作为可能解决问题的提示。