Вы использовали git checkout .
(что в Git 2.23+ возможно лучше сформулировать как git restore .
). Таким образом, вы сказали Git: , пожалуйста, перезапишите все мои отслеженные файлы рабочего дерева в этой части моего рабочего дерева. Неважно, что перезапись с тем же содержание: вы сказали Git перезаписать, так оно и было.
(Для Git было бы неразумно не трогать неизмененные файлы, и существуют режимы проверки, где это происходит, а Git не не обещаю перезаписывать неизмененные файлы. Поэтому он может делать то, что вы хотели. Но в настоящее время он делает это вместо этого. Поэтому не используйте git checkout .
.)
(Помните, индекс aka область подготовки никогда не бывает 1 пустой. Если вы не изменили файл из версии, которая была в извлеченном вами коммите, индекс будет содержать копию 2 файла! git checkout .
означает проверить все файлы в индексе, перезаписав копии в рабочем дереве копиями из индекса. )
1 Ну, вряд ли когда-либо. Вы можете иметь пустой индекс, если у вас нет отслеживаемых файлов.
2 Технически, индекс содержит ссылки на объекты Git blob, а не на реальные копии. Эффект здесь тот же, хотя.