标签: git fetch

  • 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 三个分支了,其它分支不会干扰你。