Comments 6
А что, если хранить для файла сразу два хэша по разным алгоритмам? Например хранить sha1 и md5- тогда коллизия будет возможна только брутфорсом и не важно сколько человекочасов было потрачено на исследование любого из двух алгоритмов.
Не нужны тут "два хэша".
Во первых, в гит хэш для коммита берется от содержимого + мета-информации (как-то: parent-commit, меседж, автор, сабмитер, время и т.д.). Т.е. генерация по принципу описанному гуглем здесь априори не работает.
Во вторых, кроме хэш коммита в гит важен также и хэш предка (parent-commit).
Ну и last but not least — создать два коммита с одинаковым хэш-значением в одной ветке гит в принципе не возможно, т.е. оно не ломает гит-репозитарий (от слова совсем). Единственное что возможно это переписать его амендом (или push --force в remote). Однако при fetch/pull вы получите новую ветку на том коммите.
Линус Торвальс высказался о коллизиях SHA-1 в репозиториях Git: бояться нечего