Git:什么是跟踪分支?

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

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

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

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

不幸的是,作为git和来自SVN的新手,这个定义对我来说毫无意义。

我正在阅读“ The Pragmatic Guide to Git ”(顺便提一下,这本书很棒),而且他们似乎build议跟踪分支是一件好事,在创build第一个远程(在本例中为起源)之后,您应该设置你的主分支是一个跟踪分支,但不幸的是,它不能说明为什么跟踪分支是一件好事,或者将你的主分支设置为你的原始仓库的一个跟踪分支

有人请赐教(英文)吗?

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

跟踪分支

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

克隆存储库时,通常会自动创build一个跟踪来源/主数据的主分支。 这就是为什么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/masterorigin回购中origin/master的远程跟踪分支。

但实际上,一旦build立了上游分支关系 :

  • master这样的当地分支
  • 和远程跟踪分支,如origin/master

那么你可以把master看作是一个本地的跟踪分支 :它跟踪远程跟踪分支的 origin/master ,依次追踪上游回购 origin的主分支。

替代文字

这就是我添加一个跟踪分支,所以我可以从它到我的新分支:

 git branch --set-upstream-to origin/Development new-branch