Deprecated: Function create_function() is deprecated in /home/worldhel/public_html/wp-content/plugins/codecolorer/lib/geshi.php on line 4698
Система контроля версий git позволяет очень быстро вернуть состояние файла или состояние всего проекта к моменту в котором они были зафиксированы в последнем коммите. Операция эта очень проста, быстра и удобна.
Как сбросить файл к исходному состоянию в коммите?
Для примера рассмотрим локальный репозиторий, который находится под версионным контролем git. В нашем тестовом проекте имеются изменения в содержимом файла second.php, при этом эти изменения еще не подготовлены к добавлению в следующий коммит, а значит файл находится в состоянии not staged. В этом можно убедиться, воспользовавшись командой:
1 | $ git status |
По каким-то причинам изменения в файле second.php нам не нужны, и требуется получить состояние файла, которое было зафиксировано на момент последнего коммита. Сделать это очень просто с помощью команды:
1 | $ git checkout -- second.php |
Как видно в иллюстрации выше, команда $ git checkout -- [имя файла]
сбрасывает файл к состоянию в последнем коммите, при этом не выводит в консоль сообщение об успехе. Для проверки о том, что мы достигли своей цели, применяем команду $ git status
, в результате вывода которой видим, что измененные файлы теперь отсутствуют.
Как сбросить файл к состоянию в коммите, если изменения уже подготовлены командой git add?
В случае, если в файл были внесены изменения и эти изменения уже подготовлены для фиксации в коммит с помощью команды git add, то в этом случае для сброса файла в исходное состояние нужно:
- Убрать файл из подготовленного состояния к фиксации в коммите, т.е. перевести файл из состояния staged.
- Сбросить файл к исходному состоянию.
Для примера рассмотрим ситуацию, когда в нашем локальном репозитории есть файл second.php , в который были внесены изменения и более того эти изменения были подготовлены к фиксации в коммит при помощи команды $ git add *.php
.

Для того, чтобы такой модифицированный файл сбросить к первоначальному состоянию, вначале следует перевести его в состояние not staged. Делается это при помощи команды:
1 | $ git reset HEAD second.php |
На иллюстрации выше к файлу применена команда $ git reset HEAD [имя файла]
, а после этого команда $ git satus
в результате вывода информации которой видно, что файл second.php теперь просто является модифицированным. Кстати, обратите внимание, что система контроля версий git сама в выводе команды status подсказывает, что файл можно сбросить к исходному состоянию командой $ git checkout -- [имя файла]
или подготовить изменения к фиксации в коммит при помощи $ git add [имя файла]
.
Для сброса файла в исходное состояние мы воспользуемся командой:
1 | $ git checkout -- second.php |

Вывод: Для сброса команды к состоянию сохраненному в последнем коммите применяется команда $ git checkout -- [имя файла]
. Если изменения в файле уже подготовлены для фиксации в следующем коммите, то перед сбросом следует воспользоваться также командой git reset HEAD [имя файла]
.