Как вернуть незафиксированные изменения, включая файлы и папки?

Есть ли команда git, чтобы вернуть все незафиксированные изменения в рабочем дереве и индексе, а также удалить вновь созданные файлы и папки?

Ответ 1

Вы можете запустить эти две команды:

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`)
git clean -fd

Ответ 2

Если вы хотите отменить изменения только в текущем рабочем каталоге, используйте

git checkout -- .

А до этого вы можете перечислить файлы, которые будут возвращены без каких-либо действий, просто чтобы проверить, что произойдет, с помощью:

git checkout --

Ответ 3

Используйте "git checkout -...", чтобы отменить изменения в рабочем каталоге

git checkout -- app/views/posts/index.html.erb

или

git checkout -- *

удаляет все изменения, внесенные в неустановленные файлы в состоянии git, например

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb

Ответ 4

Один нетривиальный способ - запустить эти две команды:

  • git stash Это переместит ваши изменения в stash, вернув вас в состояние HEAD
  • git stash drop Это удалит последний тайник, созданный в последней команде.

Ответ 5

git clean -fd

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

git reset --hard

См. "Как очистить локальный рабочий каталог в git?", чтобы добавить параметр -x для очистки:

git clean -fdx

Примечание -x флаг удалит все файлы, игнорируемые с помощью Git, поэтому будьте осторожны (см. обсуждение в ответе, на который я ссылаюсь).

Ответ 6

Я думаю, вы можете использовать следующую команду: git reset --hard

Ответ 7

Обратите внимание, что все еще могут быть файлы, которые, похоже, не исчезнут, они могут быть неотредактированы, но git может помечать их как редактируемые из-за изменений CRLF/LF. Посмотрите, если вы недавно внесли некоторые изменения в .gitattributes.

В моем случае я добавил настройки CRLF в файл .gitattributes, и все файлы остались в списке "измененных файлов" из-за этого. Изменение настроек .gitattributes заставило их исчезнуть.

Ответ 8

Если у вас есть незафиксированное изменение (только в вашей рабочей копии), которое вы хотите вернуть к копии в своем последнем коммите, сделайте следующее:

git checkout filename

Ответ 9

Вы можете просто использовать следующую команду git, которая может отменить все незафиксированные изменения, сделанные в вашем хранилище:

git checkout .

Пример:

[email protected] MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

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:   application/controllers/Drivers.php
        modified:   application/views/drivers/add.php
        modified:   application/views/drivers/load_driver_info.php
        modified:   uploads/drivers/drivers.xlsx

no changes added to commit (use "git add" and/or "git commit -a")

[email protected] MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .

[email protected] MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

Ответ 10

Git 2.23 представил команду git restore для восстановления файлов рабочего дерева.

https://git-scm.com/docs/git-restore

Чтобы восстановить все файлы в текущем каталоге

git restore.

Если вы хотите восстановить все исходные файлы C, чтобы они соответствовали версии в индексе, вы можете сделать

git restore '*.c'

Ответ 11

Безопасный и долгий путь:

  • git branch todelete
  • git checkout todelete
  • git add .
  • git commit -m "I did a bad thing, sorry"
  • git checkout develop
  • git branch -D todelete

Ответ 12

Я обычно использую этот способ, который хорошо работает:

mv fold/file /tmp
git checkout fold/file

Ответ 13

Использование:

git reset HEAD filepath

Например:

git reset HEAD om211/src/META-INF/persistence.xml