Git自己的文档和术语用法在这里并不完全一致。然而,一旦您了解Git使用的每个部分,它们都是有意义的。
首先,有一个远程(remote),它是像 "origin" 这样的短名称。该名称提供了几个项目,其中最重要的是一个URL。这个URL允许 "你的" Git(在你的Git存储库上运行的Git软件)与一些其他Git (相同或不同版本的Git软件,在某些其他Git存储库上运行)联系起来。
接下来,还有类似于 "master" 或 "main" 的分支名称以及您创建的任何其他名称。每个名称也提供了几个项目,其中最重要的是为您提供某个特定提交的哈希ID。分支名称中找到的提交哈希ID是定义为某些提交链中的“最后”提交。通常情况下,这使它成为您的“最新”提交;Git将此提交称为分支的“尖端提交”。
由于你的Git与其他Git进行交互,即“远程Git”,或者您想使用的任何短语-有它自己的分支名称。当您的Git调用那个Git时,您的Git可以看到它们的分支名称。某个远程分支名称的逻辑术语是“远程分支”。有时,这就是说“远程分支”的人所指的。
但是,在您的Git与那个Git取得联系并将他们拥有而您尚未拥有的任何提交带过来后(现在您已经拥有它们),您的Git将在您的存储库中创建一些类似的名称。如果他们有一个名为 "main" 的分支,并且您的Git调用它们的Git为 "origin",则您的Git将创建 "origin/main"。如果他们有一个名为 "develop" 的分支,则您的Git将创建 "origin/develop"。
我称这些 "origin/*" 样式的名称为 "remote-tracking names"。Git的某些部分称它们为 "remote-tracking branch names"。Git的其他部分和其他人有时称它们为 "remote branches"。
显然,术语 "remote branches" 是不确定的。有时它意味着 “在远程看到的分支名称”,有时它意味着“在自己的存储库中看到的远程跟踪名称”。通过使用短语 “在命名为____的远程上看到的分支名称”(填空),您可以清楚地了解您在这里所指的内容。
原来,“branch”这个术语也是有歧义的,参见“分支(branch)”具体指什么?我尽可能在必要的时候使用短语“branch name”以更加具体明确。
1由于您控制名称,因此可以在此处使用非常长的名称。那会适得其反,所以我会假设您使用一个短名称。:-)
2这实际上是创建或更新,您可以指示您的Git不要管所有它们的分支名称-但这是默认设置。请注意,默认情况下存在一个小缺陷:如果他们在您自己的Git将其名称复制到您的远程跟踪名称之后删除其中一个分支名称,则您的Git不会删除您的远程跟踪名称。因此,随着时间的推移,您的Git将建立“过时”的远程跟踪名称。