git push/pull 对应分支

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  

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/ 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 也不会成功

你可能感兴趣的:(git push/pull 对应分支)