git 工作流中,多个本地分支与远程分支一般是一一对应的,所以我们总是想偷懒的用
git push
将本地 develop 分支 推到远端的 develop 分支或者用git pull
将远端的 develop 拉到本地的 develop,但是总是不行。
执行 git pull
,如下
> git pull
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> develop
执行 git push
,如下
> git push
fatal: The current branch develop has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin develop
由上可知:是因为本地 develop 分支未能和远端 develop 分支做关联(no tracking),根据以上提示,已经给出多种解决方案
我们可以通过
git branch -vv
来查看本地分支的上游分支
> git branch -vv
* develop b35c6e5
hotfix e6d2500 [origin/hotfix]
master b35c6e5 [origin/master]
如上所示,hotfix 和 master 都有上游分支,在切换到此分支时执行 push/pull 命令不用像方法1那样补全,develop 分支上没有上游分支,所以简写的方式不成功。
1、将对应分支补充完整
> git push/pull origin develop
2、将本地 develop 分支和远端的 develop 分支做关联
> git branch --set-upstream-to=origin/develop develop
> 下一次只需执行
> git pull/push
3、推分支的同时做关联
> git push --set-upstream origin develop
> 或者
> git push -u origin develop
> 下一次只需执行
> git push/pull
以上
做关联
其实就是将远端对应的分支设置为本地分支跟踪分支/上游分支
4、创建分支并做关联
这种情况是在本地创建并跟踪远程分支,如下
远端存在分支ouyang
> git checkout --track origin/ouyang
> 或者
> git checkout -b ouyang origin/ouyang
远端不存在分支ouyang
> git checkout --track origin/ouyang
> 或者
> git checkout -b ouyang origin/ouyang
fatal: 'origin/ouyang' is not a commit and a branch 'ouyang' cannot be created from it
每一个本地分支都可以设一个上游分支,一般是设置同名上游分支,也可以设置不同名的,只是不同名 push/pull 也不会成功