我读过关于Git使用SHA-1摘要作为修订的ID。 为什么不使用更现代版本的SHA?
Git和GitHub都显示SHA的短版本 – 只是前7个字符,而不是全部40个字符 – 而且Git和GitHub都支持把这些短SHAs作为参数。 例如git show 962a9e8 例如https://github.com/joyent/node/commit/962a9e8 考虑到可能性空间现在降低了几个数量级,“仅仅2.68亿” ,Git和GitHub如何在这里防止碰撞? 他们如何处理他们?
我知道,当你添加一个子模块到git仓库时,它会跟踪它的sha1引用的子模块的一个特定的提交。 我试图find这个sha1值存储在哪里。 .gitmodules和.git/config文件仅显示子模块的path,而不显示提交的sha1。 git-submodule(1)的引用只是提到一个gitlink条目, gitmodules(5)的引用也没有提到这个。
如果你打算build立一个目录结构,在Git仓库中为一个提交命名一个目录,并且你希望它足够短以使你的眼睛不stream血,但是足够长,以至于碰撞的机会会忽略不计,通常需要多lessSHA子串? 比方说,我想唯一识别这个变化: https : //github.com/wycats/handlebars.js/commit/e62999f9ece7d9218b9768a908f8df9c11d7e920 我可以使用前四个字符: https : //github.com/wycats/handlebars.js/commit/e629 但是我觉得这样做会很危险。 但是如果使用一个代码库,那么在几年之后,如果我使用8个字符,可能会有30k的变化,那么碰撞的可能性有多大? 12? 有这样一个普遍认为可以接受的数字吗?