我有一个与我合作的主仓库(仓库 1)。我有另一个 repo (repo 2) 需要放入第一个,但我不确定如何将它们放在同一个文件夹中。我的想法是我在每个项目中都有一个我需要的标准代码库——但每个项目都是它自己的 git 存储库。
/project
/.git(repo 2)
/.git(repo 1)
/repo_2_sub
/repo_2_sub_sub
/repo_1_sub_sub
/repo_1_sub
/repo_1_sub_sub
/repo_2_sub_sub
所有文件都不重叠 - 但某些文件夹结构重叠。因此,有时一个存储库中的某些文件夹会在另一个存储库中。
我怎样才能让这两个存储库构建完整的代码库?
更新
两个 git repos 都存在于相同的根项目文件夹级别。它们不能是子模块,因为它们如上所示来回交叉。它们不是单独的文件夹。
更新 2
等等,也许这比我想象的要容易。您能否克隆一个标准代码库存储库,然后创建一个新分支作为您的项目,然后在每次更改时继续将该分支与代码库存储库 merge ?
最佳答案
编辑:为了有两个 .git 目录,当你初始化它们时,会有一些额外的工作。当你初始化时,做:
git --git-dir=.git1 --work-tree=. init
git --git-dir=.git2 --work-tree=. init
现在您在同一目录中有两个 git 目录。不是很漂亮。此时,请确保在两个 .gitignore 中都有 .git1 和 .git2,因为它们在默认情况下不会被忽略。此外,您运行的每个 git 命令还必须有 --git-dir 参数来指定您正在与之交互的存储库。您可以为此设置别名。
因为它们在同一个基本目录中并且子模块将不起作用,所以您可以将“.gitignore”文件放在两个“.git/info/exclude”目录中。将它们放在 .git/info/exclude 中可确保其他存储库不会获取排除项。
如果这两个存储库的差异比文件夹更细粒度,则可能需要一些维护,但如果您在每个 .gitignore 中指定仅属于 OTHER 存储库的文件,它应该可以工作。
参见:gitignore
关于git - 你如何 merge 两个git repos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254633/