赞
踩
当代码仓库比较大的时候,我们直接克隆整个仓库,会失败。
其实仓库大,不一定就是代码多造成的,而是由于分支多、提交历史多导致的。这个时候需要使用浅克隆来分阶段、分需求来拉取代码。
git clone --depth 2 -b dev.5.2.RB SSH://....../.git
上面的命令,就是只对SSH://…/.git这个代码仓库的 dev.5.2.RB 分支的前面2笔提交做了克隆。虽然提交历史只有前面2笔提交,但分支里面的代码是完整的、最新的。
如果本地已经拉取了分支 dev.5.2.RB 前面2笔代码,这个时候需要拉取另外一个远程分支 dev.5.3.RB-new 的代码,那么需要做如下几步:
git remote set-branches origin 'dev.5.3.RB-new'
git fetch --depth 100 origin dev.5.3.RB-new
git checkout dev.5.3.RB-new
注意:若切回原分支dev.5.2.RB分支无法pull代码,需要设置一下远程仓库取重新追踪对应的远程分支。
当我们在执行git remote set-branches的时候,如果不小心关联了一个根本不存在的分支名称,后续就可能会引发一系列远程操作的错误,报如下错误:
yangyunsheng@yangyunengdeMBP demo % git remote set-branches origin demo-branches
fatal: invalid refspec '+refs/heads/HEAD:refs/for/demo-branches:refs/remotes/origin/HEAD:refs/for/demo-branches'
这个时候,你使用命令去修改远程分支链接,会提示失败的。只能直接去修改Git的配置文件,具体是编辑 .git/config 文件中的[remote] 部分,原来错误文件内容如下:
[remote "origin"]
url = ssh://yangyunsheng@icode.factory.com:8235/factory/iov-sz/demo
fetch = +refs/heads/HEAD:refs/for/demo-branches:refs/remotes/origin/HEAD:refs/for/demo-branches
主要是修改fetch对应的值,它的匹配规则是+refs/heads/< branch-name > : < local-branch-name >。
因此我这里应该修改成如下的值:
[remote "origin"]
url = ssh://yangyunsheng@icode.factory.com:8235/factory/iov-sz/demo
fetch = +refs/heads/demo-branches:refs/remotes/origin/demo-branches
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。