如何将另一个Git仓库的远程仓库导入本地仓库?
如何把远程仓库的远程导入到本地仓库
当然可以实现!其实操作起来没你想的那么复杂,我来一步步给你捋清楚怎么做:
第一步:获取目标远程仓库的上游地址
你本地仓库myrepo的origin指向http://server/repo.git,现在要拿到这个远程仓库自己的origin地址,咱们可以通过它的配置文件来获取:
- 先把远程仓库的配置文件拉到本地临时存储:
git fetch origin refs/config:refs/remotes/origin/config
- 查看这个配置文件,找到它的
remote "origin"部分的URL:
git show refs/remotes/origin/config
在输出内容里,你会看到类似这样的段落:
[remote "origin"]
url = http://upstream-server/upstream-repo.git
fetch = +refs/heads/:refs/remotes/origin/
这里的url值就是咱们要找的——那个远程仓库自己的上游地址。
第二步:添加新的远程到本地仓库
拿到上面的URL之后,直接在myrepo里添加一个名为origin-origin的新远程:
git remote add origin-origin http://upstream-server/upstream-repo.git
第三步:拉取新远程的分支
最后执行fetch命令,把这个新远程的所有分支拉到本地:
git fetch origin-origin
完成之后,你输入git branch -r就能看到origin-origin/*开头的分支了,这些就是原远程仓库的上游分支,你可以像操作普通远程分支一样使用它们。
补充小技巧
如果你不想手动找地址,也可以试试这个一键命令(前提是远程仓库允许你访问它的配置):
git config --get remote.origin.url | xargs git ls-remote --get-url
不过这个方法对私有仓库可能不太友好,所以还是推荐前面的步骤更稳妥可靠。
内容的提问来源于stack exchange,提问作者Tom Ellis




