git - 你如何 merge 两个git repos?

标签 git

我有一个与我合作的主仓库(仓库 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/

相关文章:

git - 我的合作者的提交是如何进入我的分支的?

当 origin/develop 领先于我的本地开发分支时,git flow release 开始

git - 如何更改 Git 中先前提交之一的提交消息?

git - 在 gitconfig 文件中转义别名命令

Git 错误 : 'upstream' does not appear to be a git repository

python - Django 设置.py : Separate local and global configuration

git - VS 2019 .gitignore 没有删除错误 "db.lock permission denied"

git - 克隆 git repo 时使用 ppk key

macos - 将分支推送到远程服务器失败

git - 这个文件是 stash 的 - github 错误