如何合并两个不同的Git代码库?

9
我有两个Github存储库。一个在远程服务器上,另一个在本地服务器上。它们都具有不同的文件和文件夹的不同提交历史记录。现在我想将它们合并,以便我可以将它们作为一个单一的存储库放在远程服务器上。请帮忙!
我已经寻找了各种解决方案,比如:重置本地存储库的头部,然后将远程存储库拉到同一目录中,但似乎没有起作用:
git reset --soft head~CommitSHA(本地存储库第一个提交)
git pull ~giturlofremoterepo(在同一目录中拉取远程存储库)

1
你想把代码库保留在一个地方,即远程服务器上,还是将两者的实际更改列表合并为单个主列表? - nitishagar
@nitishagar 是的,我想将代码库保留在一个地方,即远程服务器上。 - CoderSam
2个回答

13

总之,您可以检出一个存储库,向第二个添加远程地址,在第一个上进行变基,并将结果推送到新的单一远程存储库:

克隆第一个存储库并向第二个添加远程地址

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

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

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

将第二个代码库的主分支变基到第一个代码库的主分支上,并在此过程中解决任何潜在的冲突。

git rebase master second

将代码推送到一个新的上游仓库

git push -u ...

这导致两个提交历史记录被依次连接在一起。


6
创建一个新的Git仓库并初始化,同时添加一个新的README文件。
$ 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接