Как в Git вернуть файл к состоянию в последнем коммите?


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 .

В репозитории есть модифицированный файл со статусом staged, подготовленный для фиксации изменений в следующий коммит.

Для того, чтобы такой модифицированный файл сбросить к первоначальному состоянию, вначале следует перевести его в состояние 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 checkout -- [имя файла]. Если изменения в файле уже подготовлены для фиксации в следующем коммите, то перед сбросом следует воспользоваться также командой git reset HEAD [имя файла].

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *