获取 Git 全部远程分支

因为图省硬盘,直接用了 --depth=1 命令 clone,导致在本地追踪不到远程的分支,并且用 git branch -a 看不到远程分支,当然也不能 checkout 到 origin/remote 上去。git fetch allgit fetch origin 也都拿不到内容。

因为有 slash 的内容和已经准备好的 commit,又不想重新去 clone,想起来 git 使用 fetch 时就是去找 .git/config 文件里的 remote origin 字段,因此直接改了这个文件的内容:

1
vim .git/config

找到

1
2
3
[remote "origin"]
url = https://github.com/xxx/xxx
fetch = +refs/heads/master:refs/remotes/origin/master

果然 head 和 remote origin 都指向 master,把 master 改成 *:

1
2
3
[remote "origin"]
url = https://github.com/xxx/xxx
fetch = +refs/heads/*:refs/remotes/origin/*

接着 git fetch --all,就拿到了全部的分支,现在就可以直接去 checkout 了~