git中“跟踪”的概念有不同的含义吗?

我运行’git branch -r’并得到

origin/branch1

origin/branch2

从手册页面,-r选项将“列出或删除(如果与-d一起使用)远程跟踪分支”.所以origin / branch1和origin / branch2被称为远程跟踪分支.但是,您不能直接提交到远程跟踪分支(将会创建一个匿名分支).远程跟踪分支仅在运行“git fetch”时跟踪远程分支.

这里的语义对我来说有些模糊.如果我呢

git checkout -b branch1 origin/branch1

我得到以下输出:
“branch branch1设置为跟踪远程分支branch1从原点切换到一个新的分支”branch1“”

这是我的问题,尽可能详细地说明什么让我感到困惑…
由于分支1设置为跟踪远端分支branch1从原点,是’branch1’因此被认为是一个远程跟踪分支?如果是这样,这不会与运行’git branch -r’时’origin / branch1’列为远程跟踪分支的事实相冲突?从我所理解的,存在本地(主题)分支或远程跟踪分支.当我运行’git checkout -b branch1 origin / branch1’时,我创建一个本地(主题)分支(可以在其上添加提交),它通过获取方式跟踪远程分支?运行’git branch’现在给出:’* branch1′,运行’git branch -r’仍然给出’origin / branch1’和’origin / branch2′.我创建了branch1来添加提交并跟踪origin / branch1.哪个被认为是远程跟踪分支,’git branch’的输出”branch1’或’git branch -r’输出的’origin / branch1’?

这是一个很好的问题,关于一个特别令人讨厌的git术语,虽然这个项目似乎在慢慢修复.

基本上,“轨迹”是指表达式(a)“远程跟踪分支”和(b)“branch1设置为从起始点跟踪远程分支branch1”的一个非常不同的东西.以下是一个简要的总结:

>“远程跟踪分支”:远程跟踪分支是通常由git fetch更新的分支,因此,gitpull.¹您可以将它们视为远程存储库中分支状态的缓存.你可以从他们合并,检查他们的历史等等,但你不能直接对他们工作.该短语中的“跟踪”表示远程跟踪分支表示上一次远程跟踪分支更新时远程存储库中的分支的状态.
>分支机构设置为跟踪远程分支栏从原点:在这个短语中,您被告知是git已经设置了将您的本地分支foo与远程跟踪分支原点/栏相关联的配置变量.这样可以实现很好的功能,例如在分支foo中可以输入git pull,以便从origin / bar中获取然后合并.关于分支状态相对于远程跟踪分支的消息也是如此,例如“您的分支foo是24提前提前/可以快速转发”.您被告知本地分支机构跟踪已经与远程跟踪分支相关联.你也听到这个被称为起源/酒吧是相对于foo上游的.

所以,这些跟踪跟踪的感觉是完全不同的,不幸的是,这是一个常见的混乱来源.

然而,第二种感觉似乎被缓慢地废弃了 – 例如,push.default的一个可能的选项曾经是跟踪,但现在已经不赞成使用选项名称上游了.

所以,直接回答你的问题:

By virtue of having branch1 set up to track remote branch branch1 from origin, is ‘branch1’ thus considered a remote-tracking branch?

否,branch1不是远程跟踪分支.

When running ‘git checkout -b branch1 origin/branch1’, am I creating a local (topic) branch (onto which I can add commits) that is tracking a remote branch by way of fetches?

那么,它是一种跟踪(感知2)远程跟踪分支,后者是通过提取从远程存储库中的一个分支更新的. (就个人而言,我尽量避免使用“远程分支”一词,赞成“远程存储库中的分支”,以防人们认为您意味着远程跟踪分支.)

Running ‘git branch’ now gives: ‘* branch1’, and running ‘git branch -r’ still gives ‘origin/branch1’ and ‘origin/branch2’. I created branch1 to add commits to and to track origin/branch1. Which is considered the remote-tracking branch, ‘branch1’ from the output of ‘git branch’, or ‘origin/branch1’ from the output of ‘git branch -r’?

远程跟踪分支为origin / branch1.

¹当您将成功的git推送到远程存储库中的相应分支时,它们也会更新.

翻译自:https://stackoverflow.com/questions/6631337/are-there-different-meanings-to-the-concept-of-tracking-in-git

转载注明原文:git中“跟踪”的概念有不同的含义吗?