Git – 推送分支

本地新增了一个分支,远程仓库上还没有,要把新分支推送到远程仓库。

例如,本地新增分支dev,如果使用git push命令,尝试将更改推送到远程仓库,会报以下错误:

$ git push
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin dev

原因是远程仓库中不存在本地新建分支dev的上游分支。

上游分支 – 对应于本地分支的远程分支。

所以在推送时,必须设置并创建上游分支:

git push --set-upstream origin dev

示例

Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git push --set-upstream origin dev
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 545 bytes | 181.00 KiB/s, done.
Total 6 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
remote:
remote: Create a pull request for 'dev' on GitHub by visiting:
remote:      https://github.com/kevinhwu/git-demo/pull/new/dev
remote:
To https://github.com/kevinhwu/git-demo.git
 * [new branch]      dev -> dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.

在完成这些之后,查看github上的远程仓库,可以看到新分支已经存在,其他人可以使用了。

注意:有时候本地分支要连接远程仓库中已经存在的分支,可以使用git branch --set-upstream-to=origin/dev – 为本地分支dev设置一个新的上游分支。

远程跟踪分支

远程跟踪分支位于本地仓库中,是对远程分支的引用。

远程跟踪分支是只读的,远程跟踪分支可以理解为远程分支在本地的只读镜像。远程跟踪分支以 (remote)/(branch)形式命名,例如origin/master

如果一个分支有上游分支(远程分支),就会在本地创建远程跟踪分支。

在推送新增分支时,会自动创建远程跟踪分支。推送过程如下所示:

图

想查看本地分支和远程跟踪分支,可以使用git branch -a

Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git branch -a
  dev
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master

“origin” 并无特殊含义

远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样。 同时 “master” 是当你运行 git init 时默认的起始分支名字,原因仅仅是它的广泛使用,“origin” 是当你运行 git clone 时默认的远程仓库名字。 如果你运行 git clone -o booyah,那么你默认的远程分支名字将会是 booyah/master。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载