赞
踩
如果本地的分支没有和远程的分支进行关联,在git pull/fetch
的时候,会抛出大致如下的错误信息:
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
因为当前分支没有追踪远程指定的分支的话,当前分支指定的版本快照不知道要作为服务器哪一个分支的版本快照的子节点。简单来说就是:不知道要推送给哪一个分支。建立本地分支与远程分支的映射关系(或者为跟踪关系track)。这样使用git pull
或者git push
时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。
那么如何建立远程分支,下面介绍方法:
使用git branch --help查看使用帮助
NAME
git-branch - List, create, or delete branchesSYNOPSIS
git branch [--color[=<when>] | --no-color] [--show-current]
[-v [--abbrev=<n> | --no-abbrev]]
[--column[=<options>] | --no-column] [--sort=<key>]
[--merged [<commit>]] [--no-merged [<commit>]]
[--contains [<commit>]] [--no-contains [<commit>]]
[--points-at <object>] [--format=<format>]
[(-r | --remotes) | (-a | --all)]
[--list] [<pattern>...]
git branch [--track | --no-track] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-c | -C) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>...
git branch --edit-description [<branchname>]
查看本地分支与远程分支的映射关系
git branch -vv
基本设置
执行如下命令即可将远程分支与本地分支关联
- git branch --set-upstream-to=origin/remote_branch your_branch
- origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
把当前分支的upstream为origin远程仓库的dev分支
- git branch --set-upstream-to=origin/dev dev
- or
- git branch -u origin/dev dev
- 如果当前就在 dev 分支上, 还可以省略 dev:
- git branch --set-upstream-to=origin/dev
- or
- git branch -u origin/dev
在推送的同时,同时设置upstream
git push -u origin master
推送master分支到远程origin仓库master分支,并且建立本地分支master的upstream为origin/master
不切换分支直接设置其他分支的upstream
git branch -u origin/br01-remote br01
设置本地分支br01的upstream为origin/br01-remote
或push的时候直接设置
git push -u origin br03:br03
本地没有分支,远程有分支
如果远程新建了一个分支,本地没有该分支,可以用git checkout --track origin/branch_name
,这时候本地会新建一个分支名叫branch_name
,会自动跟踪远程的同名分支branch_name
git checkout --track origin/dev // 在本地创建一个dev分支并跟踪一个同名的远程分支
用上面中方法,得到的分支名永远和远程的分支名一样,如果想新建一个本地分支不同名字,同时跟踪一个远程分支可以利用。git checkout -b new_branch_name branch_name
,这条指令本来是根据一个branch_name
分支分出一个本地分支new_branch_name
,但是如果所根据的分支branch_name
是一个远程分支名,即git checkout -b new_branch_name origin/branch_name
那么本地的分支会自动的track远程分支。建议跟踪分支和被跟踪远程分支同名。
撤销本地分支与远程分支的映射关系
- # 取消当前分支的upstream
- git branch --unset-upstream
-
- # 取消其他分支的upstream
- git branch --unset-upstream [分支名]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。