Будьте осторожны, в этом сценарии:
Commit hash - File modified
aaaaaaa index.php
bbbbbbb test.php
ccccccc index.php
Git checkout HEAD ~ 1 (или HEAD ^) index.php попытайтесь извлечь файл index.php для предыдущего хэша HEAD (bbbbbbb), но это не настоящий хеш-файл предыдущего коммита, это ccccccc. В предыдущем хеше HEAD index.php по-прежнему остается неизменным, поскольку последнее изменение было сделано в хэше ccccccc.
Чтобы вернуть какой-либо файл к предыдущему хешу коммита, который воздействовал на файл, используйте:
git log -n 2 --pretty=format:%h path/to/file.ext
Игнорировать первый хеш и взять второй хеш, затем:
git checkout <second_hash> path/to/file.ext
git commit -m 'Revert this file to real previous commit'