Git: проверка файла с предыдущей фиксации и внесение изменений в HEAD
Недавно я передал файл HEAD моей ветки, в которой есть ошибки. Мне нужно сделать следующее:
Получить этот файл с одного фиксатора до HEAD
Верните этот файл в HEAD
Какой лучший способ сделать это?
Ответ 1
Вы сами это сказали:
Сначала верните файл с одной фиксации до:
$> git checkout HEAD~1 path/to/file.ext
Затем зафиксируйте его:
$> git commit -a -m 'Retrieved file from older revision'
Если только изменения в этом файле присутствуют в последнем коммите, вы можете даже использовать git-revert:
$> git revert HEAD
Я думаю, было бы лучше сделать это отдельным фиксатором, потому что он говорит вам, что именно вы вернули, и почему. Тем не менее, вы можете скворовать это в предыдущую фиксацию, используя переключатель --amend на git-commit.
Git checkout HEAD ~ 1 (или HEAD ^) index.php попытайтесь проверить файл index.php на предыдущий хеш HEAD (bbbbbbb), но это не настоящий предыдущий хэш файл фиксации, это ccccccc. В предыдущем хеше HEAD index.php по-прежнему остается неизменным, поскольку последнее изменение было выполнено в hash 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'