Система контроля версий git позволяет очень быстро вернуть состояние файла или состояние всего проекта к моменту в котором они были зафиксированы в последнем коммите. Операция эта очень проста, быстра и удобна.
Как сбросить файл к исходному состоянию в коммите?
Для примера рассмотрим локальный репозиторий, который находится под версионным контролем git. В нашем тестовом проекте имеются изменения в содержимом файла second.php, при этом эти изменения еще не подготовлены к добавлению в следующий коммит, а значит файл находится в состоянии not staged. В этом можно убедиться, воспользовавшись командой:
[cce lang=’bash’]
$ git status
[/cce]
По каким-то причинам изменения в файле second.php нам не нужны, и требуется получить состояние файла, которое было зафиксировано на момент последнего коммита. Сделать это очень просто с помощью команды:
[cce lang=’bash’]
$ git checkout — second.php
[/cce]
Как видно в иллюстрации выше, команда [cci]$ git checkout — [имя файла][/cci] сбрасывает файл к состоянию в последнем коммите, при этом не выводит в консоль сообщение об успехе. Для проверки о том, что мы достигли своей цели, применяем команду [cci]$ git status[/cci], в результате вывода которой видим, что измененные файлы теперь отсутствуют.
Как сбросить файл к состоянию в коммите, если изменения уже подготовлены командой git add?
В случае, если в файл были внесены изменения и эти изменения уже подготовлены для фиксации в коммит с помощью команды git add, то в этом случае для сброса файла в исходное состояние нужно:
- Убрать файл из подготовленного состояния к фиксации в коммите, т.е. перевести файл из состояния staged.
- Сбросить файл к исходному состоянию.
Для примера рассмотрим ситуацию, когда в нашем локальном репозитории есть файл second.php , в который были внесены изменения и более того эти изменения были подготовлены к фиксации в коммит при помощи команды [cci]$ git add *.php[/cci] .
Для того, чтобы такой модифицированный файл сбросить к первоначальному состоянию, вначале следует перевести его в состояние not staged. Делается это при помощи команды:
[cce lang=’bash’]
$ git reset HEAD second.php
[/cce]
На иллюстрации выше к файлу применена команда [cci]$ git reset HEAD [имя файла][/cci], а после этого команда [cci]$ git satus[/cci] в результате вывода информации которой видно, что файл second.php теперь просто является модифицированным. Кстати, обратите внимание, что система контроля версий git сама в выводе команды status подсказывает, что файл можно сбросить к исходному состоянию командой [cci]$ git checkout — [имя файла][/cci] или подготовить изменения к фиксации в коммит при помощи [cci]$ git add [имя файла][/cci] .
Для сброса файла в исходное состояние мы воспользуемся командой:
[cce lang=’bash’]
$ git checkout — second.php
[/cce]
Вывод: Для сброса команды к состоянию сохраненному в последнем коммите применяется команда [cci]$ git checkout — [имя файла][/cci]. Если изменения в файле уже подготовлены для фиксации в следующем коммите, то перед сбросом следует воспользоваться также командой [cci]git reset HEAD [имя файла][/cci].