Deprecated: Function create_function() is deprecated in /home/worldhel/public_html/wp-content/plugins/codecolorer/lib/geshi.php on line 4698
Принято считать, что файл в репозитории, находящемся под версионным контролем SCV GIT, может находится в одном из 4 состояний:
- Неотслеживаемый Untracked
- Отслеживаемый неизмененный Tracked unmodified
- Отслеживаемый с изменениями Tracked modified
- Отслеживаемый подготовленный для фиксации в коммит Tracked staged
Файл со статусом staged — это файл который находится под версионным контролем, в который были внесены изменения, и эти изменения в файле были подготовлены для фиксации в следующем коммите командой git add .
Следующим логическим шагом является фиксация таких файлов staged в коммит с помощью команды $ git commit -m "Комментарий к коммиту"
, но что если Вы захотите один из файлов пока что не включать в следующий коммит?
Для этого нужно перевести файл из состояния tracked staged в состояние tracked modified. Это значит, что git продолжает осуществлять контроль над всеми сделанными в этом файле изменениями, просто файл не будет добавлен в следующий коммит.
Делается это очень просто при помощи команды:
1 | $ git reset HEAD имя_файла |
Рассмотрим все вышесказанное на наглядном примере. У нас есть каталог с тремя измененными файлами, если выполним команду $ git status
, то узнаем состояние репозитория.

Допустим, что в следующий коммит мы решили добавить все 3 файла с расширением php, и вначале мы добавляем файлы для фиксации в коммит, командой:
1 | $ git add *.php |
Теперь если мы посмотрим статус файлов в репозитории, то увидим, что эти 3 файла теперь в состоянии staged и готовы к фиксации в коммит.

По каким-то причинам, мы посчитали, что один файл third.php рано включать в следующий коммит, например не подходит под общую логику коммита, и будет включен в более поздний. Тогда воспользуемся коммандой, которая сбросит статус файла на изначальное:
1 | $ git reset HEAD third.php |

Теперь если сделать коммит изменений, то в него войдут только желаемые файлы.
1 | $ git commit -m "Текст коммита" |
В результате манипуляций у нас должен возникнуть новый коммит, при этом нужный файл в него войти не должен. Убедимся в этом при помощи двух команд:
1 2 | $ git log -2 $git status |
В качестве резюме отметим, что если файл по ошибке переведен в статус staged, в системе контроля версий GIT очень удобно и быстро перевести в его в предыдущий статус при помощи команды git reset HEAD.