git - *通常*认为有多少 git sha 是唯一标识给定代码库中的更改所必需的?

标签 git github sha

例如,如果您要构建一个目录结构,其中一个目录以 Git 存储库中的一次提交命名,并且您希望它足够短以防止眼睛流血,但又要足够长以便有机会它的碰撞可以忽略不计,通常需要多少 SHA 子串?

假设我想唯一标识此更改:https://github.com/wycats/handlebars.js/commit/e62999f9ece7d9218b9768a908f8df9c11d7e920

我只能使用前四个字符: https://github.com/wycats/handlebars.js/commit/e629

但我觉得这样做有风险。但是假设一个代码库在几年内可能有——比方说——30k 的变化,如果我使用 8 个字符,发生冲突的可能性有多大? 12?对于这类事情,是否有一个普遍认为可以接受的数字?

最佳答案

这个问题实际上在Chapter 7 of the Pro Git book中得到了回答。 :

Generally, eight to ten characters are more than enough to be unique within a project. One of the largest Git projects, the Linux kernel, is beginning to need 12 characters out of the possible 40 to stay unique.

7 位数是短 SHA 的 Git 默认值,因此这对大多数项目来说都很好。如前所述,内核团队已经将他们的数量增加了数倍,因为他们有几十万 提交。因此,对于您的 ~30k 提交,8 或 10 位数字应该完全没问题。

关于git - *通常*认为有多少 git sha 是唯一标识给定代码库中的更改所必需的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18134627/

相关文章:

git - 致命的 : protocol error: bad line length character: <htm

c# - 哈希算法简单查询

r - 从 Github 安装的软件包是否需要 Rtools?

git - 批量删除已经 rebase 和 merge 的本地分支

git - 使用 Stash(bitbucket 服务器)REST API 将文件提交到 git 存储库

Git: "working directory"到底在哪里?

java - 如何使 "MessageDigest SHA-1 and Signature NONEwithRSA"等同于 "Signature SHA1withRSA "

javascript - 这段 SHA-256 Javascript 代码有什么问题?

Git post-receive - 如何检查推送的分支是否与主分支 merge

git - 为 pull 的非默认远程指定默认分支