Как в GIT откатить состояние файла до состояния в stage?
Есть проект, в котором я создал файл foo.py. Сделал в нем изменения и применил команду git add foo.py. Запустив команду git status вижу это(пусть будет ситуация 1):
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: foo.py
Я не стал делать коммит, т.е. выполнять команду git commit и захотел немного улучшить решение. Другими словами сейчас мой проект находится в таком состоянии(пусть будет ситуация 2):
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: foo.py
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: foo.py
Как мне сейчас из ситуации 2 прийти к ситуации 1? То есть убрать изменения из файла foo.py , как будто после ситуации 1 я ничего больше не писал.
Ответы (2 шт):
git checkout foo.py
Эта команда откатит указанный файл до состояния из индекса.
Найдено на англоязычном SO: https://stackoverflow.com/questions/3107789/using-git-how-do-you-reset-the-working-tree-local-file-system-state-to-the-st
Подробности можно найти в официальной документации https://git-scm.com/docs/git-checkout
PS даже сам вывод git status подсказывает эту команду.
Команда
git checkout -- .
Она удаляет все НЕОТСЛЕЖИВАЕМЫЕ изменения. У вас разница между ситуация 1 и ситуация 2 только в том, что появились новые неотслеживаемые изменения. Эта команда их удалит, не трогая отслеживаемые. (Которые стали отслеживаемыми, когда вы выполнили команду add при ситуации 1).