Существует ли команда git для отмены всех незафиксированных изменений в рабочем дереве и индексе, а также для удаления вновь созданных файлов и папок?
1072
Существует ли команда git для отмены всех незафиксированных изменений в рабочем дереве и индексе, а также для удаления вновь созданных файлов и папок?
Ответы:
Вы можете запустить эти две команды:
источник
git clean -i
для интерактивного режима.git merge --abort
.Если вы хотите отменить изменения только в текущем рабочем каталоге, используйте
А до этого вы можете перечислить файлы, которые будут возвращены без каких-либо действий, просто чтобы проверить, что произойдет, с помощью:
источник
git reset --hard
?Используйте "git checkout - ...", чтобы отменить изменения в рабочем каталоге
или
удаляет все изменения, внесенные в неустановленные файлы в состоянии git, например
источник
git checkout -- *
не работает для меня, если я не в каталоге, где находятся измененные файлы. Чтобы извлечь все файлы из всего хранилища, вы должны сделать этоgit checkout -- :/
git checkout -- *
, звезда заменяется на Shell, со всеми файлами и каталогами в текущем каталоге. Так и должно идти в подкаталогах. Меня устраивает. Но благодаря выделенному синтаксису «: /», по моему мнению, шов чище.Один нетривиальный способ - запустить эти две команды:
git stash
Это переместит ваши изменения в тайник, вернув вас в состояние HEADgit stash drop
Это удалит последний тайник, созданный в последней команде.источник
fatal: git-write-tree: error building trees Cannot save the current index state
не помогло, новые файлы остались. Я полностью удалил все рабочее дерево, а затем
См. « Как очистить мой локальный рабочий каталог в git? » Для получения совета по добавлению
-x
опции clean:-x
Флаг примечания удалит все файлы, игнорируемые Git, поэтому будьте осторожны (см. Обсуждение в ответе, на который я ссылаюсь).источник
Я думаю, что вы можете использовать следующую команду:
git reset --hard
источник
Обратите внимание, что могут существовать файлы, которые, похоже, не исчезнут - они могут быть неотредактированными, но git мог пометить их как редактируемые из-за изменений CRLF / LF. Посмотрите, внесли ли вы какие-либо изменения в
.gitattributes
последнее время.В моем случае я добавил настройки CRLF в
.gitattributes
файл, и из-за этого все файлы остались в списке «измененных файлов». Изменение настроек .gitattributes заставило их исчезнуть.источник
Если у вас есть незафиксированное изменение (только в вашей рабочей копии), которое вы хотите вернуть к копии в своем последнем коммите, сделайте следующее:
источник
git rm filename
, и это не работает.error: pathspec 'filename' did not match any file(s) known to git.
git rm
этоgit checkout master -- filename
Git 2.23 ввел
git restore
команду для восстановления файлов рабочего дерева.https://git-scm.com/docs/git-restore
Чтобы восстановить все файлы в текущем каталоге
Если вы хотите восстановить все исходные файлы C, чтобы они соответствовали версии в индексе, вы можете сделать
источник
Вы можете просто использовать следующую команду git, которая может вернуть обратно все незафиксированные изменения, сделанные в вашем хранилище:
Пример:
источник
Я обычно использую этот способ, который хорошо работает:
источник
Безопасный и долгий путь:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete
источник
Использование:
Например:
источник