如何在仅克隆一个分支后克隆整个 Github 存储库?

How to clone the entire Github repo, after cloning only one branch?

我使用

只克隆了一个仓库的一个分支

git clone -b mybranch --single-branch git://sub.domain.com/repo.git

Clone only one branch

中所述

现在我想要获取整个存储库,包括该位置的所有分支。

我该怎么做?

最简单的方法是只删除该位置的当前文件夹,然后在没有所有标志的情况下进行正常的 git 克隆:

git clone git://sub.domain.com/repo.git

当您使用 --single-branch 选项时,您最终会得到 .git/config 中命名遥控器的配置,如下所示:

[remote "origin"]
    url = https://github.com/project/repo.git
    fetch = +refs/heads/some_branch:refs/remotes/origin/some_branch

您可以编辑配置以将 fetch 配置重置为默认值:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

然后:

git remote update

现在您拥有了整个存储库。

您可以做一个普通的 git clone,或者您可以做一个完整的 duplicate/mirror,即 完全 就像您正在克隆的回购

git clone --bare https://github.com/project/example.git

这是一个完全相同的复制品,复制了所有相同的参考文献/注释/但没有远程跟踪。如果你也想要,那么你可以:

git clone --mirror https://github.com/project/example.git

主要的 differences--mirror 设置了远程跟踪,无论您从中镜像的 repo 发生了什么变化,都会反映在该镜像副本中,如果需要,它将覆盖它自己的引用,这非常适合制作存储库的多个精确副本。

More info on duplicating/mirroring a repository here and well as how to properly mirror a git repository