一、使用--mirror下载镜像仓库后有部分仓库无法找到分支导致代码下载失败1.1、问题排查
1.1.1确认远程仓库中确实包含此分支
git ls-remote --heads <url>
1.1.2直接克隆远程分支到本地,确认权限
git clone -b branch <url>
1.1.3尝试切换repo版本,排除repo问题
1.1.4核对xml文件,排除depth=1浅克隆问题
我遇到的场景是在使用以上4个方式确认完毕后还是无法解决问题
1.2、解决方案
在镜像仓库执行以下命令:
repo forall -c "pwd;git fetch source --depth=1"
repo forall
:遍历所有的 Git 仓库,并在每个仓库中执行后面指定的命令。-c
:后面跟的是要在每个仓库中执行的命令字符串。"pwd;git fetch source --depth=1"
:首先使用pwd
命令打印当前的工作目录路径,然后使用git fetch
命令从指定的远程仓库source
拉取最新的一个提交(深度为 1)。
执行完毕后再次尝试从镜像仓库检出代码成功
二、在镜像仓库git branch能查看到分支的前提下,拉取镜像仓库代码报错
问题原因:仓库可能不是depth=1的仓库,可能第一次就没有下载完整。
解决方案:单独针对这个仓库执行一次git fetch source --unshallow
git fetch source --unshallow
是一个 Git 命令,用于将一个浅克隆(shallow clone)的仓库转换为完整克隆。浅克隆是指只克隆仓库的部分历史记录,而不是完整的历史记录。当你使用 git clone
命令进行克隆时,默认情况下会进行完整的克隆,即克隆整个仓库的历史记录。但是,有时候为了节省时间和带宽,你可能会选择进行浅克隆,只克隆最近的几个提交。然而,浅克隆的仓库在某些操作上是有限制的,比如无法进行一些历史相关的操作,如查看旧版本、切换分支等。如果你需要进行这些操作,就需要将浅克隆的仓库转换为完整的克隆。这时就可以使用 git fetch --unshallow
命令。它会从远程仓库获取缺失的历史记录,将浅克隆转换为完整的克隆