Git: проверка файла из предыдущей фиксации и внесение в него изменений в HEAD
недавно я передал файл главе моего филиала, в котором есть ошибки. Мне нужно сделать следующие вещи:
- получить этот файл из одного коммита, предшествующего HEAD
- зафиксируйте этот файл обратно в голову
каков наилучший способ сделать это?
2 ответа:
ты практически сам сказал:
сначала верните файл из одной фиксации:
$> 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.
будьте осторожны, в этом случае:
Commit hash - File modified aaaaaaa index.php bbbbbbb test.php ccccccc index.phpgit checkout HEAD~1 (или HEAD^) index.php пытается проверить индекс.php-файл для предыдущего хэша головы (bbbbbbb), но это не настоящий предыдущий хэш-файл фиксации, это ccccccc. В предыдущей главе хэш-индекс.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'