上游分支和远程跟踪分支有什么区别?

6
什么是“上游分支”和“远程跟踪分支”的区别? “上游分支”是被“远程跟踪分支”所追踪的远程分支吗?

1
Tim Biegeleisen的回答是正确的。我在这里只想指出,如果Git术语故意让人困惑,那么它可能只会更加令人困惑。:-)“分支”、“远程”和“跟踪”这些术语都有一个含义,但如果将它们组合起来,例如“远程跟踪分支”,则会得到一个略微相关但不同的含义!这真是令人发狂;唯一明智的做法是拥有所有含义的完整表格,或停止使用这些相当疯狂的名称。很难让其他人切换命名系统,所以我们大多数人使用这些疯狂的名称。 - torek
1个回答

9
我认为 Git 文档 比我自己写的更好地概括了它:

从远程跟踪分支检出本地分支会自动创建所谓的“跟踪分支”(它所跟踪的分支称为“上游分支”)。 跟踪分支是具有与远程分支直接关系的本地分支。 如果您在跟踪分支上并键入 git pull,则 Git 自动知道从哪个服务器获取以及合并哪个分支。

尽管单词 remote 出现在其名称中,但远程跟踪分支实际上并不是远程的,它完全是您本地 Git 仓库的本地内容。 它的主要目的是作为实际存在于远程(例如 GitHub、Bitbucket 等)的分支的代理。 大多数 Git 操作(例如 git mergegit rebase 等)涉及远程分支时,实际上都使用此(本地)远程跟踪分支。
上游分支,如上面的描述所述,是实际存在于仓库中的远程Git分支。当其他用户拉取远程分支时,他们的本地Git将从该分支执行拉取操作,并更新(本地)远程跟踪分支。

但是什么是上游分支? - Number945
@BreakingBenjamin 上游是真正的远程Git分支。跟踪分支基本上是该远程分支的本地副本。因此,如果远程出现问题并且您没有同步更新,则跟踪分支可能会过时。 - Tim Biegeleisen
“git pull” 通常会使用本地远程跟踪分支,但仅在合并正在跟踪的服务器上的远程分支之后才会使用。 - Peter - Reinstate Monica
关于mergerebase,你是正确的;但是pull是不同的。正常pull的整个重点是与远程同步。 - Peter - Reinstate Monica
1
你提出了正确的观点:“远程跟踪分支实际上并不是远程的,它完全是本地的……”。然后你继续说:“大多数 Git 操作(例如 git pull、git merge 等)涉及到远程分支的操作实际上都会使用这个(本地)远程跟踪分支。”在这里,“远程分支”必须被理解为“服务器”,因为你将其与“(本地)”相对比。这种对比在合并时是有道理的(因为它不访问服务器),但对于拉取来说则不然,因为它实际上确实访问了服务器。更好的说法应该是“大多数 Git 操作(除了拉取)只涉及……”。 - Peter - Reinstate Monica
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接