我有一个主存储库(repo 1),还有一个存储库(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**
等等,也许这比我想象的要容易。你能克隆一个标准的代码库repo,然后创建一个新的分支,这是你的项目,然后保持合并的分支与代码库repo每次改变?
3条答案
按热度按时间r9f1avp51#
编辑:为了有两个. git目录,当你初始化它们的时候,会有一些额外的工作。当你初始化的时候,做:
现在你在同一个目录下有两个git目录,这不是很好。此时,请确保. git1和. git2都在. gitignores中,因为默认情况下它们不会被忽略。另外,你运行的每个git命令都必须有--git-dir参数来指定你正在与哪个仓库交互,你可以为它设置别名。
因为它们在同一个基目录下,子模块不能工作,你可以把."gitignore"文件放在两个."git/info/exclude"目录下,把它们放在. git/info/exclude可以确保另一个repo不会得到排除项。
如果两个存储库的差别比文件夹更细,那么可能需要一些维护,但是如果您在每个. gitignore中指定只属于OTHER存储库的文件,那么它应该可以工作。
参见:gitignore
fnvucqvd2#
使用
git submodule
更新:
需要成为所有仓库一部分的标准代码库必须是一个独立的git仓库。
将把那个存储库添加到这个存储库中。在克隆和推送时,只有
.gitmodules
文件和存储库中的散列将被推送/克隆。以及
分别初始化和更新远程子模块REPOS。
有关详细信息,请查看git community book documentation on git submodules和/或scot chacon的截屏视频。
eagi6jfj3#
等等,也许这比我想象的要容易。你能克隆一个标准的代码库repo,然后创建一个新的分支,这是你的项目,然后保持合并的分支与代码库repo每次改变?
你可以这样做。我也有一个项目,我是这样做的。大部分代码是相同的所有子项目。我创建了一个新的分支,为每个项目,以保持文件只属于该项目分开。我定期合并
master
分支到其他分支。你也可以创建主仓库的克隆,然后你只需要把
origin/master
分支的修改合并到每个项目的master
分支中。