Git cherry-pick 和 sha-1 值

Git cherry-pick and sha-1 value

https://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project 中的示例展示了如何在树枝上摘樱桃。在这个例子中,commit 的 sha-1 值是全长使用的吗?

$ git cherry-pick e43a6fd3e94888d76779ad79fb568ed180e5fcdf

难道 cherry-pick 不允许像 e43a6 这样的短 sha-1 值,所以下面是有效的?

$ git cherry-pick e43a6

是的,您可以在任何可以使用长散列的地方使用短值。不确定使用完整哈希的文档背后的意图,但 git cherry-pick e43a6 也可以。

短哈希指南:

The full SHA-1 object name (40-byte hexadecimal string), or a leading substring that is unique within the repository. E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both name the same commit object if there is no other object in your repository whose object name starts with dae86e.

https://git-scm.com/docs/gitrevisions

奖金:

默认的短散列长度为 7 个字符:

git rev-parse --short e43a6fd3e94888d76779ad79fb568ed180e5fcdf
e43a6fd

是的,但提供的 SHA 片段必须识别唯一的 refspec。 看这里:How much of a git sha is *generally* considered necessary to uniquely identify a change in a given codebase?