Как быстро отменить поэтапные и неустановленные изменения в git?

Какой самый быстрый способ отменить изменения (поэтапные и нестационарные) в Git?

Оба файла не установлены.

$ git status -s
 M file1.txt # unstaged
?? oops.txt # unstaged

Один файл поставлен, один файл не установлен.

$ git status -s
M  file1.txt # staged
?? oops.txt # unstaged

Я могу add все индексировать, а затем stash save и drop.

$ git add .
$ git stash save
$ git stash drop
$ git status
nothing to commit, working directory clean

Есть ли более быстрый способ?

Ответ 1

Вам нужно использовать две команды: git reset --hard и git clean -fd. git reset --hard все поэтапные изменения и git clean -fd, неустановленные изменения (файлы и каталоги). Вы можете создать псевдоним, который будет выполнять две команды. Для этого просто добавьте следующие строки в ваш .gitconfig:

[alias]
  undo = '!git reset --hard && git clean -fd'

Ответ 2

git reset HEAD
git checkout .

git reset HEAD отключит все изменения и git checkout. отбрасывает все изменения.

Ответ 3

Вы можете использовать git clean

$ git status -s
?? oops.txt

$ git clean -f
Removing oops.txt

$ git status -s

Дополнительная информация:

Очищает рабочее дерево путем рекурсивного удаления файлов, которые не являются под управлением версии, начиная с текущего каталога.

Ответ 4

git stash

это вариант. Это удалит поэтапные и неустановленные изменения. Вы можете получить их снова, если вам нужно, с помощью git stash pop.