Вычисляется ли SHA-1 коммитов только на основе содержимого дерева?

Ради эксперимента, допустим, ваш журнал git идентифицирует следующие коммиты

commit 16bc8486fb34cf9a6faf0f7df606ae72ad9ea438  // added 2nd file
commit 9188f9a25b045f130b08888bc3f638099fa7f212  // initial commit

После фиксации .git / refs / Heads / master указывает на 16bc8486fb34cf9a6faf0f7df606ae72ad9ea.

Скажем, после этого я вручную редактирую файл .git / refs / Heads / master , чтобы он указывал на 9188f9a25b045f130b08888bc3f638099fa7f212

На этом этапе git status распознает, что нужен новый незафиксированный файл некоторого внимания. Это тот же файл, о котором раньше позаботился мой второй коммит.

Если я зафиксирую это .. git log теперь показывает

commit b317f67686f9e6ab1eaabf47073b401d677205d5  // 2nd file committed for the 2nd time
commit 9188f9a25b045f130b08888bc3f638099fa7f212  // initial commit

Вопрос 1:

Вы заметите, что хеши SHA различаются в первый раз. совершил второй файл и сейчас. Это почему? Содержимое файла не изменилось, это все тот же самый файл.

Вопрос 2

Что случилось на этом этапе с исходной второй фиксацией? Когда я выполняю git show 16bc8486 , он показывает эту фиксацию. Однако он не отображается в истории журнала git .

10
задан Ciro Santilli 新疆改造中心法轮功六四事件 17 May 2016 в 10:31
поделиться