分类
git 技术

Git 操作特定分支的小技巧

加入新的开发团队之后,难免有一些东西不适应。比如,我团队要求把所有代码,不分前后端放到一个仓库里;而且,还都不删分支,于是现在代码仓库有 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 fetchgit 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

此时你就可以只操作 masterbugfixrelease 三个分支了,其它分支不会干扰你。

meathill

爱编程,爱旅游,爱吐槽。
今年的目标是完成并运营至少一个 Side Project。
《Electron + Vue 实战开发》龟速创作中……

“Git 操作特定分支的小技巧”上的2条回复

前后端分开两个大仓库已经是我做 monorepo 的极限了,不敢想象前后端放到一起的仓库是啥感觉…… 尤其是我这还好几个语言……

欢迎吐槽,共同进步

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据