GIT中的“ Commit ID”和“ SHA1 Hash”有什么区别?

Sat*_*mar 2 git

我已经从事GIT已有一段时间了。

但是,我找不到“提交ID”和“ SHA1-哈希值”之间的区别

“ Commit ID”和“ SHA1”之间有什么区别?任何带有示例的简单解释都很好

Edu*_*nis 6

提交ID是标识提交的内容。有时您会看到速记版本,它只是实际提交ID与完整哈希值的前七个字符。

考虑以下示例:

`[master 42e2e5a] Added a new readme file to illustrate commit IDs.
1 file changed, 1 insertion(+)
create mode 100644 myreadme
Run Code Online (Sandbox Code Playgroud)

注意,它显示了提交ID的简写版本。因为实际的提交ID是40个十六进制字符,所以它们指定了160位SHA-1哈希。


完整的提交ID

 git show -s --format=%H
Run Code Online (Sandbox Code Playgroud)

结果

42e2e5af9d49de268cd1fda3587788da4ace418a
Run Code Online (Sandbox Code Playgroud)

速记版本

  git show -s --format=%h
Run Code Online (Sandbox Code Playgroud)

结果

42e2e5a
Run Code Online (Sandbox Code Playgroud)

但是请注意它们是相同的。


eft*_*ft0 6

我已经阅读了之前提供的答案,我认为有一些东西要添加到它们中。的修订总是指向一个SHA1(它实际上没有点,修订鉴定其SHA1 ID,但忍耐一下),但在Git的数据库对象可以是:修改,树木,斑点等,它们都是由SHA1鉴定身份证件。因此,修订意味着使用 sha1 ID(来识别它……但在修订中还使用了其他 sha1 ID,例如父级、树对象),但 sha1 ID 并不一定意味着它是修订。