加入新的开发团队之后,难免有一些东西不适应。比如,我团队要求把所有代码,不分前后端放到一个仓库里;而且,还都不删分支,于是现在代码仓库有 3k+ 分支……
我很受不了,clone 一次代码大几个 G,我感觉我的固态硬盘在呻吟……
于是简单研究了一下,只 clone 特定分支的技巧,记录如下。
clone 特定分支最近一次提交
git clone -b 分支名 --single-branch --depth=1 仓库地址
上面这段命令可以只 clone 一个分支、最近一次提交,速度非常快。缺点是会损失代码提交记录,如果你要回顾历史代码,可能会比较麻烦。不过具体到我负责的这个项目,它的历史记录乱成一张蜘蛛网,git blame
出来全是各种 merged branch
,实在没啥看头。
fetch 特定分支最近一次提交
只 clone 一个分支可能不太够,比如我要看别人的提交,就要把别人的分支拉下来。这个时候,如果你用上面的方式 clone 代码,再执行 git fetch
是拉不到其它分支的,因为本地 git 配置里就不存在别的分支。
所以这时候要:
git fetch --depth 1 origin 远程分支:本地分支
git checkout 本地分支
修改 .git/config
除了上面的方法,你还可以修改 .git/config
。打开 .git/config
,你会看到这样的配置:
[remote "origin"]
url = git@github.com:username/repo.git
fetch = +refs/heads/master:refs/remotes/origin/master
如果直接 git clone
不加参数得到的仓库,“master
”那里会是 *
。此时,你可以把想要增加的分支列在后面,然后照常 git fetch
,git checkout
即可。修改后的配置文件大约是:
[remote "origin"]
url = git@github.com:username/repo.git
fetch = +refs/heads/master:refs/remotes/origin/master
fetch = +refs/heads/bugfix:refs/remotes/origin/bugfix
fetch = +refs/heads/release:refs/remotes/origin/release
此时你就可以只操作 master
、bugfix
、release
三个分支了,其它分支不会干扰你。
欢迎吐槽,共同进步