Git之本地分支和远程分支建立追踪关系的几种方式

如果本地的分支没有和远程的分支进行关联,在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 branches

SYNOPSIS
       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

upstream的设置

基本设置

执行如下命令即可将远程分支与本地分支关联

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 [分支名]


 

猜你喜欢

转载自blog.csdn.net/lovedingd/article/details/126941499