社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

对git头的质疑

Mandroid • 5 年前 • 1433 次点击  

我问这个问题是为了理解git的实现细节,所以我在技术方面可能是错的。

通过阅读git scm书籍,我了解HEAD可以指向一个分支(它本身就是一个指向提交的指针)。还有一个承诺。

所以头部可以指向两个不同类型的物体。

指针是否可以指向diff类型的对象(commit和branch似乎在层次结构方面没有连接)?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51459
 
1433 次点击  
文章 [ 1 ]  |  最新文章 5 年前
torek
Reply   •   1 楼
torek    6 年前

在技术上,但完全是具体的, HEAD 实际上是一个文件, .git/HEAD . 它包含:

  • 分支机构的名称,或
  • 提交的哈希ID。

什么时候? 头部 包含提交的哈希ID,仅此而已。Git称这种情况为 分离头 唯一可用的信息是提交的散列ID。

什么时候? 头部 包含分支的名称,但是,现在有两种方法可以询问Git:

  • 嘿,吉特,告诉我什么散列ID 头部 名字。 吉特看着 头部 ,看到它的名字 master ,然后看 主人 查看什么散列ID 主人 名字。这就是你问题的答案。

  • 或者, 嘿,吉特,告诉我哪个分支 头部 名字。 吉特看着 头部 ,看到它的名字 主人 ,并告诉你 主人 作为你问题的答案。

分行名称 始终只包含一个提交的哈希ID,因此如果 头部 包含分支名称,Git始终可以执行 头部 -通过执行这两个步骤来散列ID。什么时候? 头部 但是,包含原始哈希ID,如果试图询问Git所包含的分支名称,则会出现错误:

$ git checkout --detach master
HEAD is now at 83232e3864 The seventh batch
$ git symbolic-ref HEAD
fatal: ref HEAD is not a symbolic ref

或者,使用 git rev-parse --symbolic-full-name ,只是指纹 头部 :

$ git rev-parse --symbolic-full-name HEAD
HEAD

重新连接 头部 主人 使它们都产生分支名称:

$ git checkout master
Switched to branch 'master'
$ git symbolic-ref HEAD
refs/heads/master
$ git rev-parse --symbolic-full-name HEAD
refs/heads/master

所以就这样 头部 可以是分支名称或提交哈希,除非它只能是提交哈希。