Способ работы Git в ситуации перемещения / переименования совершенно другой. Git отслеживает только содержимое, поэтому он знает, что файл X имел хеш SHA1 abc123...
при одном коммите, а файл Y, как оказалось, имел тот же хэш abc123...
при следующем коммите. Таким образом, инструменты Git при просмотре истории или чего-либо еще делают вывод, что файл X должен быть переименован в имя файла Y в этой точке.
Таким образом, Git реконструирует действия, предпринятые для перехода от одного коммита к другому, без необходимости иметь эти знания во время коммита. Он может обнаруживать ситуации, когда вы переименовываете файл и , изменяете что-то внутри файла (конечно, он не делает этого путем сравнения хэшей SHA1, но выполняет сравнение текста между файлами, которые были изменены в коммите ).