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/master
是origin
回购中origin/master
的远程跟踪分支。
但实际上,一旦build立了上游分支关系 :
- 像
master
这样的当地分支 - 和远程跟踪分支,如
origin/master
那么你可以把master
看作是一个本地的跟踪分支 :它跟踪远程跟踪分支的 origin/master
,依次追踪上游回购 origin
的主分支。
这就是我添加一个跟踪分支,所以我可以从它到我的新分支:
git branch --set-upstream-to origin/Development new-branch