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

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

737
задан MEM 27 апр. '11 в 19:06
источник поделиться

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
1263
ответ дан htanata 28 апр. '11 в 5:37
источник поделиться

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

git checkout -- .

Надеюсь, что это поможет.

417
ответ дан Ramashish Baranwal 21 июня '13 в 7:41
источник поделиться

Используйте "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
77
ответ дан Zarne Dravitzki 13 марта '13 в 4:16
источник поделиться

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

  • git stash Это переместит ваши изменения в stash, вернув вас в состояние HEAD
  • git stash drop Это удалит последний тайник, созданный в последней команде.
35
ответ дан glumgold 18 июля '13 в 12:20
источник поделиться
git clean -fd

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

git reset --hard

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

git clean -fdx

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

12
ответ дан Fr0sT 15 окт. '12 в 9:57
источник поделиться

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

10
ответ дан Josnidhin 27 апр. '11 в 19:10
источник поделиться

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

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

4
ответ дан Rob Quist 19 июля '16 в 13:07
источник поделиться

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

  • git branch todelete
  • git checkout todelete
  • git add .
  • git commit -m "I did a bad thing, sorry"
  • git checkout develop
  • git branch -D todelete
-2
ответ дан Jason Lemay 19 нояб. '13 в 5:08
источник поделиться

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

git reset HEAD filepath

Например:

git reset HEAD om211/src/META-INF/persistence.xml
-3
ответ дан Aniket 09 февр. '15 в 16:18
источник поделиться

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

mv fold/file /tmp
git checkout fold/file
-3
ответ дан thinkhy 08 апр. '16 в 10:17
источник поделиться

Другие вопросы по меткам