Существует ли команда git для отмены всех незафиксированных изменений в рабочем дереве и индексе, а также для удаления вновь созданных файлов и папок?
Существует ли команда git для отмены всех незафиксированных изменений в рабочем дереве и индексе, а также для удаления вновь созданных файлов и папок?
Ответы:
Вы можете запустить эти две команды:
# 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 clean -i
для интерактивного режима.
git merge --abort
.
Если вы хотите отменить изменения только в текущем рабочем каталоге, используйте
git checkout -- .
А до этого вы можете перечислить файлы, которые будут возвращены без каких-либо действий, просто чтобы проверить, что произойдет, с помощью:
git checkout --
git reset --hard
?
Используйте "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
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 clean -fd
не помогло, новые файлы остались. Я полностью удалил все рабочее дерево, а затем
git reset --hard
См. « Как очистить мой локальный рабочий каталог в git? » Для получения совета по добавлению -x
опции clean:
git clean -fdx
-x
Флаг примечания удалит все файлы, игнорируемые Git, поэтому будьте осторожны (см. Обсуждение в ответе, на который я ссылаюсь).
Я думаю, что вы можете использовать следующую команду: git reset --hard
Обратите внимание, что могут существовать файлы, которые, похоже, не исчезнут - они могут быть неотредактированными, но git мог пометить их как редактируемые из-за изменений CRLF / LF. Посмотрите, внесли ли вы какие-либо изменения в.gitattributes
последнее время.
В моем случае я добавил настройки CRLF в .gitattributes
файл, и из-за этого все файлы остались в списке «измененных файлов». Изменение настроек .gitattributes заставило их исчезнуть.
Если у вас есть незафиксированное изменение (только в вашей рабочей копии), которое вы хотите вернуть к копии в своем последнем коммите, сделайте следующее:
git checkout filename
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 restore '* .c'
Вы можете просто использовать следующую команду git, которая может вернуть обратно все незафиксированные изменения, сделанные в вашем хранилище:
git checkout .
Пример:
ABC@ABC-PC 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")
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .
ABC@ABC-PC 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
Безопасный и долгий путь:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete