在工作过程中,经常会git clone代码到本地,然后创建并切换到新分支dev,用的命令是
git checkout -b dev origin/dev
然后就开始写代码,git add 和 git commit, git push命令。
下班后在家里电脑上使用git提交代码到github,之前我的github上的仓库都没有建dev分支,只有master分支。正好可以练习一下,git clone代码到本地,创建并切换到dev分支
git clone XXX.git
git checkout -b dev origin/dev
修改代码之后提交,出现报错提示:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> release
没有远程分支,使用以下命令:
git branch --set-upstream-to=origin/dev dev
就可以正常git pull, git push. 现在github上也有dev分支了。
在平时工作中从来没有使用这个命令,应该是小组的负责人已经帮大家执行了这一步,创建好了dev分支,研发人员git clone代码时就已经有了dev分支。 既然已有dev,为什么还需要创建,直接切换到dev分支不就行了?
git checkout dev
带着这个疑问,请教了一个以前的同事,他让我查看本地分支和远程分支,都正常。
git branch
git branch -r
他又让我输入 git branch -vv,这是二个v,不是w,查看关联的远程分支
git branch -vv
显示dev分支已经关联了远程dev分支。也就是说git checkout dev命令,自动关联了远程的dev分支。
后来我把疑问发到某个论坛,有个回复是git help checkout,我在git bash输入之后,跳出一个网页,查看
git checkout <branch>
有一行文字明确解释了这个问题:
git checkout <branch>
To prepare for working on <branch>, switch to it by updating the index and the files in the working tree, and by pointing HEAD at the branch. Local modifications to the files in the working tree are kept, so that they can be committed to the< branch>.
If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name, treat as equivalent to
$ git checkout -b <branch> --track <remote>/<branch>
所以problem solved. 如果dev没找到,但是远程确实存在一个名为dev分支,就等同于git checkout -b dev origin/dev
我承认我是菜鸟,都不知道有git help这个命令。
网友评论