- git branch -r #查看远程分支
- git branch -a #查看所有分支,本地和远程
- git remote show [remote-name] #查看远程仓库信息
其中 git remote show [remote-name] 展示的信息包括:
- git checkout -b local origin/daily/dev
上面的方法可以直接检出远程分支到本地,在本地新建 local 分支,并切换到 local 分支上,注意本地分支和远程分支不同名。
这个方法会自动创建远程分支
和本地分支
- /daily/dev
的跟踪关系, 通过
- local
可以看到包含如下信息:
- git remote show origin
- Local branches configured for 'git pull':
- local merges with remote /daily/dev
- master merges with remote master
- Local ref configured for 'git push':
- master pushes to master (up to date)
可以看出,远程分支
和本地分支
- /daily/dev
建立了
- local
的关系,但是没有建立
- git pull
的关系。此时如果强行 push,不会成功,会出现如下提示:
- git push
- fatal: The current branch new has no upstream branch.
- To push the current branch and set the remote as upstream, use
- git push --set-upstream origin develop
我们知道通过
可以建立默认的本地 master 分支和远程 master 分支的 pull 和 push 的关系,但是我们无法通过 clone 命令检出非 master 分支,那么对于非 master 分支怎么办呢?
- git clone git@gitlab.xxx.com:xxxxx.git
Git 中
可以指定在没有明确指定远程分支的情况下,默认 push 的远程分支,其取值可以是:
- push.default
central / non-central workflows 是 Git 的两种常见工作流场景:
在 Git 2.0 之前,
的内建值被设为'matching',2.0 之后则被更改为了'simple'。
- push.default
在了解 push.default 之后,我们有如下几种比较好的从远程分支检出本地分支的方法(基于 V2.0+):
所以如果你只有一个远程仓库,且你想检出的分支名称和远程分支不同名(有些管理工具会自动生成比较丑的远程分支名,类似:/features/2017-03-31-featuresA-1),那么你可以通过设置 push.default 默认推送到 pull 的远程分支 (upstream 分支):
- #检出重命名
- git checkout -b dev origin/features/2017-03-31-featuresA-1
- #设置push.default为upstream
- git config --global push.default upstream
- #or
- git config push.default upstream
- #取消设置
- git config --unset push.default
如果不想通过修改 upstream,那么只能通过设置检出本地分支名称和远程分支名称相同:
- git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>
注意:如果使用
检出,那么远程分支名称是
- git checkout -b features/feature_1 origin/features/feature_1
,而不是
- features/feature_1
。
- origin/features/feature_1
这个也不算什么解法,但是强烈推荐,就是建立远程分支的时候,取个好点的名字。
- git clone git@gitlab.xxx.com:xxxxx.git
- #从master建立新分支
- git checkout -b dev
- #push并建立同名远程分支
- git push origin dev
来源: http://www.cnblogs.com/chrischennx/p/6653774.html