在Arch Linux打包中,我遇到了术语git tip(What is a branch tip in Git?)。作为一个git用户,我习惯称之为HEAD我认为是相同或至少是一个类似的概念。
两者之间有什么关系?为什么同一个东西有两个名称(假设它们是)并且是否存在一个名称更合适的情况?
答案 0 :(得分:6)
HEAD
是git中的一个特殊术语。它指的是目前最近的提交 ,而位于您现在坐的图表中的位置。
如果您在分支机构及其顶端,则分支提示也称为HEAD
。
如果您查看另一个分支,则该分支的提示将变为HEAD
。
如果你检查出一个根本不是分支提示的随机提交,例如
git checkout HEAD~3
(尽管不会让你进入一个独立头状态),然后该提交被称为HEAD
,尽管它不一定与任何分支的提示对齐。
答案 1 :(得分:2)
这是一个与Git模型本身密切相关的问题:所有提交(初始提交除外)至少有一个父级:
+--- G
+
A +- B +- C +- D +- H
+ +
+----|--- E
|
+--- F
这意味着所有提交都可以被视为有向非循环图的节点,其中初始提交是根;这个有向无环图的叶子是分支尖端。
重新HEAD
,来自git(1)
:
名为refs的命名指针标记历史中的有趣点。裁判可能包含 SHA-1对象的名称或另一个ref的名称。名称开头的参考号 ref / head /包含分支的最新提交(或“head”)的SHA-1名称 正在开发中。感兴趣的标签的SHA-1名称存储在ref / tags /下。一个 名为HEAD的特殊引用包含当前签出分支的名称。
这个描述在分离的HEAD场景中并不适用(因为分支实际上没有名称),但是如果你把这种情况看作匿名分支,它仍然可以很好地描述它。
简而言之,HEAD
是指向提交的指针(从某种意义上说 - 将HEAD
视为指向ref的指针通常更准确,而指针又指向提交),而分支提示是指特定类型的提交,即没有后代的提交。