使用git,都少不了各种分支的切换,今天我们就聊一聊切换远程分支那些事。本帖适合分不太清楚怎么合理的切远程分支到本地的童鞋,老手请忽略。
我们在工作中,可能会经常遇到这样一个场景:从git仓库clone一个项目,需要在一个远程已有的分支上,继续开发工作。
进入刚clone下来的项目,使用命令
git branch -a
是这样的
可见目前,本地分支为默认的master,而远程分支有一个dev和master,我们想在dev上进行一些开发工作。一般,我们使用
git checkout -b dev
当我们这样切到dev分支,再进行一些工作,然后执行pull/push操作之前,就会一个错误,没法pull/push远程分支
git的报错提示永远这么清楚明了,告诉我们,我们当前的本地分支没有追踪信息,也就是没有关联的远程分支,怎么办呢?当然难不倒聪慧的小伙伴们:
git push -u origin dev
pull/push的时候,指定 <remote> 和 <branch>,清楚的告诉git要把分支关联到哪个远程的哪个分支即可,加上 -u就是建立关联,以后就不需要每次都指定<remote> 和 <branch>了。
为什么从远程切过来的分支,反而是关联不到远程了呢?还需要自己手动关联一下?
原因是出在,git checkout -b 作用是,基本当前分支,检出一个新的分支,并切换到新分支,是以下两个命令的合集:
git branch dev
git checkout dev
这种从当前项目检出的分支,其实跟远程分支毫无关系,只是恰好名字叫做dev而已,所以会手动关联,所以并不推荐这种方式切换远程分支哦。
我们可以直接将远程分支检出为本地的一个分支并切换到该分支,使用如下命令
git checkout -b dev origin/dev
当然下面的命令也可以简化为这样,也能完美解决问题了
git checkout dev
总结:
切换分支虽然简单,但是还是有初学的小伙伴混淆其中的小细节,希望本篇博文能帮助大家