jub*_*0bs 34 git branch terminology
据我所知,术语"分支"(用Git的说法)可能指的是相关但不同的东西:
但是,我已经看到这个术语过去常常是指三种可能的用法以外的东西(下面有更多细节).在Git上下文中,我的列表中缺少的"分支"一词是否还有其他有效和明确的用法?
使用Git大约一年后,我正在为CS学生准备一个简短的教程.我真的想要确定Git术语,以避免任何混淆.
当然,我现在已经使用Git分支了一段时间; 我很习惯使用它们并且发现Git分支模型很棒.但是,我仍然发现术语"分支"有问题且含糊不清,因为它似乎至少引用了两个不同的东西,具体取决于它所使用的上下文...有时甚至在同一个教程/手册中.
Pro Git书(3.1中 - 分支是什么),在显示下图后,

继续将分支定义为
只是一个指向其中一个提交的轻量级可移动指针.
据我所知,这也是Git手册页中"分支"的含义.
我对这个定义非常满意.我认为分支只是指向DAG中特定提交的引用,而分支的"提示提交"是该引用指向的提交.到现在为止还挺好.可是等等...
该Atlassian的Git的教程介绍分支如下:
分支代表独立的发展路线.
我猜他们的意思是一串提交.让我改进一下这个想法......唯一对我有意义的解释是术语"分支"也可以指存储库的提交DAG的子图,该提交DAG由所考虑的提示提交可到达的所有提交组成.
但是,Pro Git书籍也包含以下图表(参见3.4 - 分支工作流程),

这似乎与我的解释相矛盾,因为它似乎暗示只有提交C2- C5(不C1)属于develop分支,并且只提交C6- C7(不是C1- C5)属于topic分支.
我发现这种用法含糊不清,因为如果我在那个阶段绘制DAG,而不知道分支引用在过去指向的位置,并且没有任何假设三个分支之间的任何层次结构,我会得到的是

我还发现其他Git学习资源中的一些图表令人困惑.特别考虑以下内容(取自Lynda.com的介绍视频- Git Essential Training):

这里,尖端master是实际 534de(和HEAD指向master),但图中的"主"标签的位置是非常误导.在这种情况下,该标签应该描述的是我不清楚的......
tor*_*rek 10
你是对的.
我们可以通过分离"本地"和"远程"分支标签来进一步拆分您的项目1:本地分支(本地标签)是起始的名称(内部 - 许多前端命令隐藏这个)refs/heads/,而"远程分支" - 这些是也称为"远程跟踪分支" - 启动refs/remotes/,然后在命名分支的部分之前再命名一个特定的远程路径组件.(编辑,2018年4月:我不喜欢短语"远程分支"或"远程跟踪分支";我认为最好只调用这些远程跟踪名称.但是有很多现有文档使用其他两个短语,所以我们需要了解这种用法.)
例如,你毫无疑问熟悉refs/remotes/origin/master,但如果你有一个遥控器,bob你可能也有refs/remotes/bob/hacks/feep跟踪Bob的hacks/feep.
本地分支名称具有区别特征,默认情况下,通过将该名称写入特殊引用,将您"放在"该分支上; 而一旦你建立这样一来,新的提交(创建人,,,等)会导致新提交的SHA-1被写入到分支文件.(新提交作为其父级或其父级之一,具有旧的分支提示.)refs/heads/branchgit checkoutHEADgit commitgit mergegit cherry-pick
我试图使用像"分支提示"之类的术语来明确表示分支名称(如refs/heads/master分支,"分支名称"或"本地分支名称")的提交,以引用名称本身(无论是否加前缀refs/heads/),以及 -我认为这是最不成功的 - "分支结构"来引用DAG子集.但是,给定一个带有fork-and-merge的DAG,如下所示:
o--o
/ \
...-o--o o--o-...
\ /
o--o
Run Code Online (Sandbox Code Playgroud)
我有时想将小苯环状物体中的一半或另一半称为"分支",我对此没有什么好处.
(顺便提一下,如果你是一名拓扑学家,Atlassian图也可以线性绘制的事实不会打扰你.但是,正如老笑话所说的那样,拓扑学家们不断尝试从他们的甜甜圈中喝水,并且每次吃掉他们的咖啡杯只是一个圆环.)
| 归档时间: |
|
| 查看次数: |
3197 次 |
| 最近记录: |