1. ホーム
  2. ギット

[解決済み】あるコードベースの変更を一意に特定するために、git shaは一般的にどれくらい必要だと考えられていますか?

2022-04-07 03:16:07

質問

例えば、Git リポジトリのコミットに対してディレクトリ名を付けるようなディレクトリ構造を構築する場合、目から血が出ない程度に短く、しかし衝突の可能性が無視できる程度に長くしたい場合、SHA 部分文字列は一般的にどの程度必要でしょうか。

例えば、この変更を一意に識別したいとします。 https://github.com/wycats/handlebars.js/commit/e62999f9ece7d9218b9768a908f8df9c11d7e920

最初の4文字までなら使える。 https://github.com/wycats/handlebars.js/commit/e629

でも、それはリスクが高いような気がするんです。 しかし、数年の間に、例えば3万回の変更があるようなコードベースを想定して、8文字を使用した場合の衝突の可能性はどうでしょうか? 12? この種のものでは、一般に許容範囲とされる数字があるのでしょうか?

どのように解決するのですか?

この質問に対する回答は Pro Git bookの第7章 :

一般に、8文字から10文字程度で十分すぎるほどユニークになります。 プロジェクト内で 最大のGitプロジェクトの一つであるLinuxカーネル。 は、40文字のうち12文字が必要となりつつあります。 一意である。

短いSHAは7桁がGitのデフォルトなので、ほとんどのプロジェクトではそれで問題ありません。Kernel チームは何度も数字を増やしています。 数十万 コミットしています。ですから、あなたの約30kコミットに対しては、8桁あるいは10桁で全く問題ないでしょう。