Git:什么是跟踪分支?

时间:2011-01-14 16:50:27

标签: git version-control branch

有人可以解释“跟踪分支”,因为它适用于git吗?

以下是git-scm.com的定义:

  

Git中的“跟踪分支”是本地的   连接到远程的分支   科。当你推拉它时   分支,它会自动推送和   拉到它所在的远程分支   与...连接。

     

如果您总是从中拉出来,请使用此选项   同一上游分支进入新的   分支,如果你不想使用   明确地说“git pull”。

不幸的是,对于git和来自SVN的新手来说,这个定义对我来说完全没有意义。

我正在阅读“The Pragmatic Guide to Git”(顺便说一句好书),他们似乎建议跟踪分支是一件好事,并且在创建第一个遥控器后(原点,在这种情况下) ,您应该将您的主分支设置为跟踪分支,但遗憾的是,它不包括为什么跟踪分支是一件好事通过设置主分支获得的好处成为原始存储库的跟踪分支

有人可以赐教(英文)吗?

5 个答案:

答案 0 :(得分:96)

ProGit booka very good explanation

跟踪分支

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

克隆存储库时,它通常会自动创建跟踪origin / master的主分支。这就是为什么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推送和取消。

答案 1 :(得分:31)

The Pro Git book mentions

  

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

不完全是。 SO问题“Having a hard time understanding git-fetch”包括:

  

没有本地跟踪分支的概念,只有远程跟踪分支。
  因此 origin/master master 回购中 origin 的远程跟踪分支。

但实际上,一旦你在upstream branch relationship之间建立了一个upstream repo

  • master
  • 这样的本地分支
  • 以及origin/master
  • 等远程跟踪分支

然后,您可以将master视为本地跟踪分支:它会跟踪远程跟踪分支 origin/master,后者跟踪{{3}} origin的主分支。

alt text

答案 2 :(得分:21)

以下是关于GIT跟踪分支机构的个人学习笔记,希望它对未来的访问者有所帮助:

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

跟踪分支和“git fetch”:

enter image description here enter image description here enter image description here

答案 3 :(得分:4)

这就是我添加跟踪分支的方式,以便我可以从中进入我的新分支:

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

答案 4 :(得分:0)

跟踪分支不过是一种节省我们键入内容的方法。

如果我们跟踪分支,则不必总是键入git push origin <branch-name>git pull origin <branch-name>git fetch origin <branch-name>git merge origin <branch-name> 假设我们将远程命名为origin ,我们可以仅使用git pushgit pullgit fetch,{{1 }}。

我们在以下情况下跟踪分支机构:

  1. 使用git merge
  2. 克隆存储库
  3. 当我们使用git clone时。 git push -u origin <branch-name>使其成为跟踪分支。
  4. 当我们使用-u