如何合并两个不同的Git存储库?

时间:2019-06-14 11:13:04

标签: git github gitlab bitbucket

我有两个Github存储库。一个存储库位于远程服务器上,另一个存储库位于本地服务器上。它们都具有不同文件和文件夹的不同提交历史。现在,我想合并它们两者,以便将它们作为一个单独的存储库放在远程服务器上。请帮忙!

我一直在寻找各种建议的解决方案,例如:重置本地存储库的头部,然后将远程存储库拉到同一目录中,但似乎不起作用:

git reset --soft head〜CommitSHA(本地存储库的首次提交)

git pull〜giturlofremoterepo(在同一目录中拉远程仓库)

2 个答案:

答案 0 :(得分:1)

简而言之,您可以签出一个存储库,将远程存储库添加到第二个存储库,在第二个存储库的基础上重新设置第二个存储库,并将结果推送到新的单个远程存储库中:

克隆第一个存储库,然后向第二个存储库添加一个远程

git clone https://first.repo
git remote add other https://second.repo

获取第二个,并将其主分支检出到本地分支second

git fetch second
git checkout second/master
git checkout -b second

在第一个存储库的主分支之上重新建立第二个存储库的主分支。解决所有潜在的冲突。

git rebase master second

推送到新的上游存储库

git push -u ...

这导致两个提交历史被一个接一个地连接。

答案 1 :(得分:1)

创建一个新的git存储库并使用新的自述文件进行初始化。

$ mkdir merged_repo
$ cd merged_repo
$ git init 
$ touch README.md
$ git add .
$ git commit -m "Initialize new repo"

添加第一个远程存储库

$ git remote add -f first_repo `link_to_first_repo`
$ git merge --allow-unrelated-histories first_repo/master

创建一个子目录并将所有first_repo文件移动到该目录。

$ mkdir first_repo
$ mv * first_repo/
$ git add .
$ git commit -m "Move first_repo files to first_repo directory"

添加第二个远程存储库

$ git remote add -f second_repo `link_to_second_repo`
$ git merge --allow-unrelated-histories second_repo/master

解决所有合并冲突,并按如下所示完成合并

$ git merge --continue