git分支拉取时无法获取到所有的分支内容

前言

随着项目代码与分支切换的增多,快速clone具体分支代码到本地成为了很实际的问题。git clone -b master ulr 这种深拷贝方式,动辄几个G,十几个G的数据。让分支切换成为噩梦。

浅克隆经常在一些大型仓库中很有用——不用花费大量时间去clone一个完整的仓库,仅仅checkout出来某个分支(如master)的最新N次递交:
git clone --depth 1 https://github.com/openwrt/openwrt.git

由于clone的内容非常少,因此速度就大大提升了。查看git log也只有最后一次递交记录而已.

问题来了
这种方式clone出来的代码不会有远程仓库的tags,也不会有远程仓库的其他分支,如果需要切换tag或者切换分支应该怎么办呢?

处理git clone --depth=1拉不不了分支的问题:
1>先执行: git pull --unshallow (先转换存储库为完整存储库)
拉取所有tags
2>再执行: git config remote.origin.fetch “+refs/heads/:refs/remotes/origin/
3>git fetch -pv (拉取所有分支)

亲测有效

另外还有另外一种方法,与此类似
git clone -depth 1之后切换远程分支的方案

上一篇:4.创建型模式(单例&原型)


下一篇:git clone unable to connect的排错记录