В своем pre-commit hook git, похоже, проверяется, что HEAD существует. Если это не так, по умолчанию используется специальный хэш пустого дерева для сравнения индекса.Почему git's pre-commit hook подтверждает, что HEAD существует?
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
Хеш по умолчанию является специальным хэшем. Я прочитал, что я мог бы получить его через
git hash-object -t tree < /dev/null
against
позже используется как это
# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --
Почему крюк сделать это? В каких ситуациях я могу выполнить фиксацию, но HEAD будет недействительным?