Git:什么是跟踪分支?

有人可以解释一个“跟踪分支”,因为它适用于混帐?

这里是来自git-scm.com的定义:

Git中的“跟踪分支”是连接到远程分支的本地分支。 当您按下并拉动该分支时,它会自动推送并拉到它所连接的远程分支。

如果你总是从同一个上游分支进入新分支,并且你不想明确使用“git pull”,那么使用它。

不幸的是,作为git和SVN的新手,这个定义对我来说绝对没有意义。

我正在阅读“The Pragmatic Guide to Git”(顺便提一下,这本书很棒),他们似乎认为跟踪分支是一件好事,在创建第一个远程(在本例中为原点)后,您应该将您的主分支设置为追踪分支,但遗憾的是,这并不能说明为什么跟踪分支是好事,或者将您的主分支设置为您的原始存储库的追踪分支会带来什么好处。

有人能告诉我(英文)吗?


ProGit书有一个非常好的解释:

跟踪分支

从远程分支中检出本地分支会自动创建所谓的跟踪分支。 跟踪分行是与远程分行有直接关系的本地分行。 如果你在追踪分支并键入git push,Git会自动知道推送到哪个服务器和分支。 另外,在其中一个分支上运行git pull会获取所有远程引用,然后自动合并到相应的远程分支中。

克隆存储库时,通常会自动创建一个跟踪来源/主数据的主分支。 这就是为什么git push和git pull在没有其他参数的情况下开箱即可使用的原因。 但是,如果您愿意,您可以设置其他跟踪分支 - 不跟踪原始分支并且不跟踪主分支的分支。 简单的例子就是刚才看到的例子,运行git checkout -b [branch] [remotename]/[branch] 。 如果你有Git版本1.6.2或更高版本,你也可以使用--track简写:

$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"

要使用不同于远程分支的名称设置本地分支,您可以轻松使用具有不同本地分支名称的第一个版本:

$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"

现在,您的本地分支sf将自动从origin/serverfix推入并拉出。


Progit书提到:

跟踪分行是与远程分行有直接关系的本地分行

不完全是。 SO问题“难以理解git-fetch ”包括:

没有这种局部跟踪分支的概念,只有远程跟踪分支。
所以origin/master是一个远程跟踪分支masterorigin回购。

但实际上,一旦建立了以下之间的上游分支关系:

  • master这样的当地分支
  • 和一个远程跟踪分支,如origin/master
  • 然后可以考虑master作为本地跟踪分支 :它跟踪远程跟踪分支 origin/master其中,在转弯追踪上游回购的主分支origin

    替代文字


    这就是我添加跟踪分支的方式,所以我可以将它从我的新分支中拉出来:

    git branch --set-upstream-to origin/Development new-branch
    
    链接地址: http://www.djcxy.com/p/23777.html

    上一篇: Git: What is a tracking branch?

    下一篇: Delete last commit in bitbucket