当前位置:   article > 正文

git shallow clone之后切换远程分支的方案

git shallow clone

shallow clone

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

git clone --depth 1 https://github.com/openwrt/openwrt.git

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

问题来了

shallow clone对于快速clone代码很有用,但是clone出来的代码不会有远程仓库的tags,也不会有远程仓库的其他分支,如果需要切换tag或者切换分支应该怎么办呢?

取回tag

这个很简单

git fetch --tags

重新把远程的tag fetch到本地的origin仓库即可,然后在git tag就会看到tag了,之后再用checkout就可以了。

取回分支

这个就不是那么好办了,因为这个要求shallow clone必须转换为deep clone。如果你不想删掉现在的仓库目录重新clone的话,需要做下面两步:

  1. git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
  2. git fetch --unshallow

其中,第一步git config是容易被忽视的,shallow clone之后,remote.origin.fetch的值是+refs/heads/master:refs/remotes/origin/master,所以会发现怎么fetch都没有其他分支。

转载于:https://my.oschina.net/abcfy2/blog/817432

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/407588
推荐阅读
相关标签
  

闽ICP备14008679号