我有两个Github存储库。一个存储库位于远程服务器上,另一个存储库位于本地服务器上。它们都具有不同文件和文件夹的不同提交历史。现在,我想合并它们两者,以便将它们作为一个单独的存储库放在远程服务器上。请帮忙!
我一直在寻找各种建议的解决方案,例如:重置本地存储库的头部,然后将远程存储库拉到同一目录中,但似乎不起作用:
git reset --soft head〜CommitSHA(本地存储库的首次提交)
git pull〜giturlofremoterepo(在同一目录中拉远程仓库)
答案 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