Как откатить изменения сделанные после "git add" но до "git commit"?
В репозиторий когда-то был добавлен файл src\test1.cpp далее пойдет речь о трех состояниях файла:
- На момент
git checkoutиз удаленной ветки - Сделаны изменения и выполнена команда
git add src\test1.cpp - Сделаны еще изменения в этом же
src\test1.cppфайле, ноgit addне выполняли
Если сейчас запустить git status, то команда покажет, что проиндексированные изменения, но после были добавлены еще, которые не проиндексированы. В этих последних изменениях разработчик не больше нуждается и не хочет добавлять их в следующий комит.
Как разработчику откатить файл src\test1.cpp к состоянию 2 ?
Напомню о том, как работают некоторые команды:
git reset src\test1.cpp- откат проиндексированных изменений, но они остаются файлововой системе. Другими словами как будто быgit addвообще никогда не делали, а это не то что надо!git checkout src\test1.cpp- откат проиндексированных и удаление изменений на файловой системе
После обеих этих команд проиндексированные изменения исчезают! А это не то что надо. Нужно их сохранить.
Ответы (1 шт):
Вам нужна команда git restore:
git restore src\test1.cpp
Она отменяет изменения в локальной копии, которые еще не добавлены в индекс.
Обратите внимание, что git status подсказывает, какие команды что делают в данной ситуации. В этом случае полезна часть про to discard changes in working directory:
On branch my-branch
Your branch is ahead of 'origin/my-branch' by 2 commits.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: src/test1.cpp
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: src/test1.cpp