合并两个Git存储库

时间:2010-02-10 02:03:20

标签: git

我有一个git项目,其文件结构如下:

    Project_A/files...

我有另一个git项目,其文件结构如下:

    Project_B/
        Project_A/files...
        files...

现在我想将项目A合并到项目B中,并继续使用项目B作为唯一的存储库。

我尝试使用子树合并,但我收到错误消息“条目'XXX'重叠'XXX'”

有没有办法将项目A合并到项目B并保留所有提交历史记录?

提前致谢!

2 个答案:

答案 0 :(得分:12)

你可以这样做:

在Project_A中,创建一个新的Project_A子目录并将所有内容放入其中,因此Project_A现在看起来像

Project_A/
    Project_A/files...

然后,在Project_B中:

git remote add project_A Project_A
git fetch project_A
git branch project_A project_A/master
git checkout -b merge_trial master
git merge project_A

...并根据需要修复merge_trial(或泡沫,冲洗,重复直到你得到你想要的冲突/重叠)。

作为svn-> git migration的一部分,我实际上做了类似的事情。

答案 1 :(得分:1)

如果projectB已包含projectA作为submodule,您应该:


如果projectA不是projectB的子模块,我建议将projectA提取到projectB个回购中,然后使用嫁接技术将两个提交行链接在一起,而不处理经典合并所涉及的所有合并冲突。

请参阅问题Git question: possible to merge two different by equal repositories?