通常情况下,我们使用命令 git clone 来下载代码。但是下载的代码一般都是默认分支(默认分支可以再gitlab/github里设置)。
# 克隆代码,仅下载一个分支,gitlab/github上设置的默认分支,一般是master/main。也可以指定分支clone
git clone https://github.com/pcottle/learnGitBranching.git
此时。
# 显示本地分支(注意:是本地分支),分支前面有 * 号的表示处于当前分支
git branch
# 显示所有分支,包括远程分支。
git branch -a
在有网的情况下。我们clone代码之后,切换分支时比较容易的,通过。
git checkout 分支名
即可切换分支。但是如果说目前并不知道要用到哪些分支。而且我需要把代码传输到内网环境下使用,那就只能 挨个去checkout 所有分支,然后就进行内网传输。
这就带来一个问题,如果代码分支数量少还好说,如果分支比较多,就比较麻烦了。有什么简单的方法可以一次下载所有分支么?
通过我们在做Git迁移时,需要使用到一个命令。
git clone --bare https://github.com/pcottle/learnGitBranching
即 git clone --bare (需要注意这种方法下载的文件是不能直接使用的)。 关于git迁移,可以查阅
那么现在我们也可以通过使用这种方式来进行全量分支的下载。
# 创建一个空文件夹
mkdir repo
# 进入该文件夹
cd repo
# 使用bare方式clone代码。并把下载后的文件夹重命名为 .git
git clone --bare path/to/repo.git .git
# 使用该命令(不用担心core.bare是否存在) 或 git config --bool core.bare false
git config --unset core.bare
# 上面的命令执行完,再执行该命令,就可以看到仓库里面的内容了
git reset --hard
之后你就可以通过
git branch
命令查看本地所有分支。你会发现本地有所有的分支。
这里有几点需要注意:
1.是使用bare的形式去下载
2.下载完后重命名文件夹
3.将重命名后的文件夹,放到一个空文件中(这一步不是必须的,但是有必要,因为如果不这么做并且所在文件夹的文件数量有很多的的话,后续的两个命令恢复的代码,会搞的比较乱)
目前来说这种方式是最好的下载git所有分支的办法了。网上的其他方法并不好用。
参见:git - How do I clone all remote branches? - Stack Overflow
Jacob Fike的回答