日常的Git操作,比如git push master,git pull dev等类似操作,我们有时候可能都会心惊胆战,因为我们会有多个远程分支版本有可能操作错了,就会导致不必要的麻烦。当然我们可以避免这种情况,我们经常做的就是:
git push/pull origin master
git push/pull origin dev
但是,有一定洁癖的程序员觉得每次在提交/拉取代码的时候,总是要多输入origin master/dev 很是麻烦,我直接git pull/push 不好吗?这个操作是可以,但是我们为了不引起不必要的麻烦,所以我们就需要确认本地分支和远程分支的追踪关系。这个追踪关系的大概意思就是说,我们每一个本地分支都对应一个远程分支,就是我们直接git push/pull的时候,默认的那个远程分支。
我们可以通过如下命令查看关系:
git branch -vv
显示如下:
我们可以清晰的在结果中看到,本地分支dev对应的是远程分支origin/dev,本地分支master对应的远程分支是origin/master。那么我们就可以安心的直接使用git push/pull而不用没回都要在后面添加origin master/dev了。
如果没有像上面一样,每个branch显示对应的远程分支版本,我们执行git pull/push 命令的时候,会有如下提示:
There is no tracking information for the current branch.
Please specify which branch you want to merge whith.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so whith:
git branch --set-upstream-to=origin/<branch> dev
那么我们按照Tips执行:
git branch --set-upstream-to=origin/dev
但是有写时候,出于某些特殊场景下,该命令并不生效,我们可以采取如下的方式解决。
1、进入到当前项目下的.git文件夹,并打开config文件。打开后我们会看到如下图:
参数解释如下
1、[remote "origin"] 这一项可以修改对应的远程仓库地址。
2、[branch "master"] 中的merge可以修改对应的远程仓库。那么[branch "dev"]是同理的。
2、修改想要的远程分支即可。比如想要修改本地分支master对应远程分支dev那么把merge = refs/heads/master修改为merge = refs/heads/dev即可。
想看是否修改完成我们再次执行git branch -vv即可。
注 :有些同学会发现打开config文件后,发现没有[branch "master"]这一项,那么您的项目应该没有执行过git clone或git pull命令,导致没在config文件中生成该配置。
参考: