小编典典

*通常*认为需要多少 git sha 才能唯一标识给定代码库中的更改?

all

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

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

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

但我觉得那样会有风险。但是假设一个代码库在几年内可能会发生“大概”30k 的变化,如果我使用 8
个字符,那么发生冲突的可能性有多大?12?有没有一个数字通常被认为可以接受这种事情?


阅读 92

收藏
2022-05-17

共1个答案

小编典典

这个问题实际上在Pro Git 书的第 7 章中得到了回答:

通常,八到十个字符足以在一个项目中保持唯一性。最大的 Git 项目之一,Linux 内核,开始需要 40 个字符中的 12 个来保持唯一性。

7 位数字是短 SHA 的 Git 默认值,因此对于大多数项目来说都可以。如前所述,Kernel 团队已经增加了好几次,因为他们有 几十万次
提交。因此,对于您的约 30k 次提交,8 或 10 位数字应该是完全可以的。

2022-05-17