В Git для генерации уникальных идентификаторов коммитов используется алгоритм хеширования SHA-1 (Secure Hash Algorithm 1). 35
Процесс происходит так: Git берёт все изменённые файлы и каталоги, которые были подготовлены для фиксации изменений, и пропускает их через алгоритм SHA-1. 3 В результате получается 160-битное (20-байтное) значение хэша, которое представляет собой уникальное представление входных данных. 35
Для генерации хэша используется следующая информация: 2
- исходное дерево коммита (которое распадается на все поддеревья и большие двоичные объекты); 2
- родительский коммит SHA-1; 2
- информация об авторе (с отметкой времени); 2
- информация о коммиттере (также с отметкой времени); 2
- сообщение о фиксации. 2
Хэш выполняет несколько функций в Git: 5
- Уникальность. 5 Каждый коммит и каждый фрагмент контента в репозитории однозначно идентифицируется по его хэшу SHA-1, что позволяет отслеживать изменения и ссылаться на них. 5
- Целостность. 5 Хэш обеспечивает контрольную сумму содержимого, которую Git использует для обнаружения повреждения или подмены данных. 5 Если даже изменится один бит, результирующий хэш будет полностью разным. 5