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


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

10 901

10 ответов:

вы можете выполнить следующие две команды:

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

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

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

git checkout -- .

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

git checkout --

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

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

или

git checkout -- *

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

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

один нетривиальный способ заключается в выполнении этих двух команд:

  1. git stash Это переместит ваши изменения в тайник, возвращая вас в состояние головы
  2. git stash drop это приведет к удалению последнего тайника, созданного в последней команде.
git clean -fd

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

git reset --hard

в разделе "Как очистить мой локальный рабочий каталог в git? " за советом добавить -x возможность очистки:

git clean -fdx

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

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

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

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

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

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. git branch -D todelete

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

mv fold/file /tmp
git checkout fold/file

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

git reset HEAD filepath

например:

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