Ответ 1
Мой старый ответ Как бы git обрабатывать конфликт SHA-1 на blob?" все равно будет применяться даже для фиксации, а не для blob.
Поскольку torek упоминает в комментариях, git просто думает обо всем как о "объектах", каждый с их собственным SHA1.
(Изображение из Git Внутренние - git Ссылки главы ProGit Book v2)
Хотя фиксация, вероятно, не будет выполнена (есть несколько проверок в git-commit-tree.c
), вам также необходимо рассмотреть случай где два фиксации с одним и тем же SHA1 (и каким-то другим контентом) создаются в репозиториях A и B... и репо A извлекает репо B!
Commit 8685da4 (март 2007, git 1.5.1) позаботился об этом, и выборка завершилась неудачно.
Commit 0e8189e (октябрь 2008 г., git 1.6.1) упоминает, что с index V2:
коэффициенты для ссылки SHA1 для получения повреждения, поэтому он фактически соответствует SHA1 другого объекта с одинаковым размером (заголовок треугольника хранит ожидаемый размер базового объекта, который применяется против) практически равен нулю.
Он все еще реализует проверку CRC упакованного объекта при распаковке объектов.