能否在已克隆的Git仓库中拉取所有refs?
如何在已克隆的Git仓库中拉取所有refs?
你提到的通过镜像克隆获取所有refs的命令可整理为:
git clone --mirror ssh://some.remote.server/some-repo.git cloned-repo/.git cd cloned-repo git config --bool core.bare false git checkout some-branch
针对能否在一个已克隆的Git仓库中,从远程拉取所有refs?(注:"所有refs"指refs/*,包括分支、标签,以及如refs/contrib/$merge_request_id/versions/$version、refs/pull/$pull_request_id/head这类合并请求相关的refs),答案是可以的,具体操作如下:
先检查当前远程仓库的fetch规则(以
origin远程为例):git config --get-all remote.origin.fetch默认情况下,Git只会拉取
refs/heads/*(远程分支)和refs/tags/*(标签)到本地。删除现有fetch规则,添加覆盖所有远程refs的规则:
# 清除所有已有的fetch配置 git config --unset-all remote.origin.fetch # 添加拉取所有refs的规则,将远程所有refs映射到本地refs/remotes/origin/目录下 git config --add remote.origin.fetch '+refs/*:refs/remotes/origin/*'其中
+符号表示强制更新对应本地引用,即使是非快进式更新也会覆盖。执行拉取命令,获取所有远程refs:
git fetch origin
完成后,可通过git show-ref命令查看本地已获取的所有refs,确认是否包含远程的全部refs。
内容的提问来源于stack exchange,提问作者Runxi Yu
相关产品推荐
相关产品推荐

