Git本地与远程分支间建立追踪关系

新建分支时建立跟踪关系
$ git checkout -b <本地分支名> <远程主机名>/<远程分支名>

push时建立追踪关系
$ git push -u <远程主机名> <本地分支名>
加上-u参数,这样push时,本地指明分支就和远程主机的同名分支建立追踪关系,在以后的推送或拉取时就可以简化命令。

$ git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>可以手动建立本地分支与远程分支的链接(追踪)关系,该命令前要先确保该本地分支和远程分支已存在。
git pull时,如果当前本地分支没有跟踪信息时,会报错。提醒要指定合并的(远程)分支。这时可采用上面方式指定追踪关系,再git pull即可拉取其当前分支所追踪的远程分支,并进行合并。

查看追踪关系

本部分参考:Git:本地分支和远程分支建立追踪关系的三种方式

git branch -vv

示例:
在这里插入图片描述
这里可以看到 dev 分支正在跟踪 origin/dev 分支并且是最新的,也能看到 issue-101 分支正在跟踪 origin/issue-101 分支并且是最新的,接下来可以看到 master 分支正在跟踪 origin/master 分支并且 “ahead”是21,意味着本地有21个提交还没有推送到服务器。

git pull

本部分参考:git pull命令

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。其等同于git fetch + git merge。
其完整格式为:
git pull <远程主机名> <远程分支名>:<本地分支名>
比如:
取回origin主机的next分支,与本地的master分支合并:git pull origin next:master
如果远程分支是与当前分支合并,则冒号和后面的部分可以省略。
git pull origin next表示取回origin/next分支,再与当前分支合并。

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。例如,在git clone时,所有本地分支默认与远程主机的同名分支,建立追踪关系。

Git也允许手动建立追踪关系。
git branch --set-upstream master origin/next指定master分支追踪origin/next分支。

如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

git pull origin 命令表示,本地的当前分支自动与对应的origin主机“追踪分支”进行合并。

如果当前分支只有一个追踪分支,连主机名都可以忽略。git pull表示当前分支与唯一一个追踪分支进行合并。

git pull时,如果当前本地分支没有跟踪信息时,会报错。提醒要指定合并的(远程)分支。这时可采用git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>git branch --set-upstream <本地分支名> <远程主机名>/<远程分支名>指定追踪关系,再git pull即可。

git fetch

本部分参考:git fetch命令详解

一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。

git fetch <远程主机名>将远程主机的更新,全部取回本地

git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。

git fetch origin master:master表示将远程仓库origin中分支master的更新取回到本地分支master中。

如果只想取回特定分支的更新,可以指定分支名:git fetch <远程主机名> <远程分支名>

所取回的更新,在本地主机上要用“远程主机名/分支名”的形式读取。比如origin主机的master,要用origin/master读取。

git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
git branch -r
origin/master

git branch -a

  • master
    remote/origin/master
    上面命令表示,本地主机的当前分支是master,远程分支是origin/master。

取回远程主机的更新之后,可以在它的基础上,使用git checkout命令创建一个新的分支。

$ git checkout -b newBranch origin/master表示在origin/master的基础上,创建出一个新分支newBranch。

也可以用git merge命令或git rebase命令,在本地分支上合并远程分支:git merge origin/mastergit rebase origin/master

经试验
1、git fetch取到的内容不会显示在当前路径下,通过git checkout -b <本地分支> <远程主机>/<远程分支>创建本地分支后,当切换到该分支时,在该路径下会显示拉取的文件。之后对文件进行更新,完成后添加、提交,最后push到远程分支即可。比较适合于在某分支上进行开发的情形。
2、通过git fetch <本地分支> <远程主机>:<远程分支>能直接拉取远程分支内容到本地分支中(会自动创建该本地分支),但本地分支并不会追踪远程分支。通过git checkout -b <本地分支> <远程主机>/<远程分支>创建的本地分支,会追踪远程分支。

其他推荐:

Git创建本地分支并关联远程分支

发布了34 篇原创文章 · 获赞 1 · 访问量 1817

猜你喜欢

转载自blog.csdn.net/weixin_44761910/article/details/105029748