Как удалить локальные (неотслеживаемые) файлы из текущего рабочего дерева Git?
-
09-06-2019 - |
Вопрос
Как удалить неотслеживаемые локальные файлы из текущего рабочего дерева?
Решение
Согласно документации Git мерзавец чистый
Удалить неотслеживаемые файлы из рабочего дерева
Шаг 1 – показать, что будет удалено, с помощью -n
вариант:
# Print out the list of files which will be removed (dry run)
git clean -n
Чистый шаг - остерегаться:это приведет к удалению файлов:
# Delete the files from the repository
git clean -f
- Чтобы удалить каталоги, запустите
git clean -f -d
илиgit clean -fd
- Чтобы удалить игнорируемые файлы, запустите
git clean -f -X
илиgit clean -fX
- Чтобы удалить игнорируемые и неигнорируемые файлы, запустите
git clean -f -x
илиgit clean -fx
Примечание разница в корпусе X
для двух последних команд.
Если clean.requireForce
в вашей конфигурации установлено значение «true» (по умолчанию), необходимо указать -f
иначе ничего на самом деле не произойдет.
Снова см. git-clean
документы для получения дополнительной информации.
Параметры
-f
,--force
Если переменная конфигурации GIT Clean.Requireforce не установлена на false, GIT Clean откажется работать, если не указано
-f
,-n
или-i
.
-x
Не используйте стандартные правила игнорирования, прочитанные из .gitignore (по каталогу) и
$GIT_DIR/info/exclude
, но все еще используйте правила игнорирования, данные с-e
параметры.Это позволяет удалять все нетрабежные файлы, включая продукты сборки.Это может быть использовано (возможно, в сочетании с RESET GIT) для создания нетронутого рабочего каталога для проверки чистой сборки.
-X
Удалите только файлы, игнорируемые Git.Это может быть полезно для восстановления всего с нуля, но сохранить файлы вручную.
-n
,-dry-run
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
-d
Удалите неотслеживаемые каталоги в дополнение к неотслеживаемым файлам.Если не отстраненный каталог управляется другим хранилищем GIT, он не удаляется по умолчанию.Использовать
-f
Опция дважды, если вы действительно хотите удалить такой каталог.
Другие советы
Использовать git clean -f -d
чтобы убедиться, что каталоги также удаляются.
Затем вы можете проверить, действительно ли ваши файлы исчезли с помощью git status
.
Я удивлен, что никто не упомянул об этом раньше:
git clean -i
Это означает интерактивный и вы получите краткий обзор того, что будет удалено, и сможете включить/исключить затронутые файлы.В целом это все равно быстрее, чем выполнение обязательного --dry-run
перед настоящей уборкой.
Вам придется бросить -d
если вы также хотите позаботиться о пустых папках.В конце концов получается хороший псевдоним:
git iclean
При этом дополнительное использование интерактивных команд может утомить опытных пользователей.Сейчас я просто использую уже упомянутый git clean -fd
Если неотслеживаемый каталог является собственным репозиторием git (например,субмодуль), вам нужно использовать -f
дважды:
git clean -d -f -f
Простой способ удалить неотслеживаемые файлы
Чтобы удалить все не отстраненные файлы, простой способ - сначала добавьте их все и сбросить репо как показано ниже
git add --all
git reset --hard HEAD
Мне нравится git stash push -u
потому что вы можете отменить их все с помощью git stash pop
.
РЕДАКТИРОВАТЬ:Также я нашел способ показать неотслеживаемый файл в тайнике (например. git show stash@{0}^3
) https://stackoverflow.com/a/12681856/338986
РЕДАКТИРОВАТЬ2: git stash save
устарел в пользу push
.Спасибо @script-wolf.
Это то, что я всегда использую:
git clean -fdx
Для очень большого проекта вам может потребоваться запустить его пару раз.
git-clean это то, что вы ищете.Используется для удаления неотслеживаемых файлов из рабочего дерева.
Если необходимо удалить неотслеживаемые файлы из определенного подкаталога,
git clean -f {dir_path}
И комбинированный способ удаления неотслеживаемых каталогов/файлов и игнорируемых файлов.
git clean -fxd {dir_path}
после этого у вас будут измененные файлы только в git status
.
git clean -fd
удаляет каталог
git clean -fX
удаляет игнорируемые файлы
git clean -fx
удаляет игнорируемые и неигнорируемые файлы
можно использовать все вышеперечисленные параметры в сочетании как
git clean -fdXx
обратитесь к руководству по git для получения дополнительной помощи
Удалите все лишние папки и файлы в этом репозитории + подмодули.
Это приведет вас в то же состояние, что и свежий клон.
git clean -ffdx
Удалите все дополнительные папки и файлы в этом репозитории, но не его подмодули.
git clean -fdx
Удалите только дополнительные папки, но не файлы (например.папка сборки)
git clean -fd
Удалить лишние папки + игнорируемые файлы (но не новые добавленные файлы)
Если файл не был проигнорирован и еще не возвращен, он остается.Обратите внимание на заглавную букву Х.
git clean -fdX
Новый интерактивный режим
git clean
ХОРОШО, удаление нежелательные неотслеживаемые файлы и папки легко использовать git
в командной строке просто сделайте это так:
git clean -fd
Двойная проверка прежде чем делать это, так как файлы и папки будут удалены без создания истории...
Также в этом случае -f
означает силу и -d
означает каталог...
Итак, если вы хотите удалить только файлы, вы можете использовать -f
только:
git clean -f
Если вы хотите удалить (каталоги) и файлы, вы можете удалить только неотслеживаемые каталоги и файлы следующим образом:
git clean -fd
Кроме того, вы можете использовать -x
флаг для включения файлов, которые игнорируются git.Это будет полезно, если вы хотите удалить все.
И добавление -i
флаг, заставляет git запрашивать разрешение на удаление файлов один за другим на ходу.
Если вы не уверены и хотите сначала все проверить, добавьте -n
флаг.
Использовать -q
если вы не хотите видеть отчет после успешного удаления.
Я также создал изображение ниже, чтобы сделать его более запоминающимся, особенно я видел, как многие люди путают -f
для очистки папки иногда или перепутайте как-нибудь!
Лучшим способом является использование:мерзавец чистый
git clean -d -x -f
Это удаляет неотслеживаемые файлы, включая каталоги. (-d)
и файлы, игнорируемые git (-x)
.
Также замените -f
спор с -n
выполнить dry-run
или -i
для интерактивного режима, и он сообщит вам, что будет удалено.
Интерактивный подход пользователя:
git clean -i -fd
Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y
-я за интерактивность
-f для силы
-d для каталога
-x для игнорируемых файлов (добавьте, если необходимо)
Примечание: Добавлять -н или --пробный прогон просто проверить, что он будет делать.
git clean -f -d -x $(git rev-parse --show-cdup)
применяется в чистом виде к корневому каталогу, независимо от того, где вы его вызываете в дереве каталогов репозитория.Я использую его постоянно, поскольку он не заставляет вас покидать папку, в которой вы сейчас работаете, и позволяет выполнять очистку и коммит прямо с того места, где вы находитесь.
Убедитесь, что флаги -f
, -d
, -x
соответствовать вашим потребностям:
-d
Remove untracked directories in addition to untracked files. If an
untracked directory is managed by a different Git repository, it is
not removed by default. Use -f option twice if you really want to
remove such a directory.
-f, --force
If the Git configuration variable clean.requireForce is not set to
false, git clean will refuse to delete files or directories unless
given -f, -n or -i. Git will refuse to delete directories with .git
sub directory or file unless a second -f is given. This affects
also git submodules where the storage area of the removed submodule
under .git/modules/ is not removed until -f is given twice.
-x
Don't use the standard ignore rules read from .gitignore (per
directory) and $GIT_DIR/info/exclude, but do still use the ignore
rules given with -e options. This allows removing all untracked
files, including build products. This can be used (possibly in
conjunction with git reset) to create a pristine working directory
to test a clean build.
Доступны и другие флаги, просто проверьте git clean --help
.
Для меня работало только следующее:
git clean -ffdx
Во всех остальных случаях я получал сообщение «Пропуск каталога» для некоторых подкаталогов.
Лайфхак для такой ситуации я только что придумал и попробовал (он прекрасно работает):
git add .
git reset --hard HEAD
Остерегаться! Будь уверен внесите все необходимые изменения (даже в неотслеживаемых файлах) прежде чем выполнять это.
Если вы просто хотите удалить файлы, указанные как неотслеживаемые в «git status»,
git stash save -u
git stash drop "stash@{0}"
Я предпочитаю это «GIT Clean», потому что «Git Clean» будет удалять файлы, игнорируемые GIT, поэтому ваша следующая сборка должна будет восстановить все, и вы также можете потерять настройки IDE.
Чтобы узнать, что будет удалено, перед фактическим удалением:
git clean -d -n
Он выведет что-то вроде:
Удалил бы sample.txt
Чтобы удалить все, что указано в выводе предыдущей команды:
git clean -d -f
Он выведет что-то вроде:
Удаление файла sample.txt
Чтобы удалить неотслеживаемые файлы, вам следует сначала использовать команду для просмотра файлов, которые будут затронуты очисткой.
git clean -fdn
Это покажет вам список файлов, которые будут удалены.Теперь, чтобы удалить эти файлы, используйте следующую команду:
git clean -fd
Будьте осторожны при выполнении команды git clean.
Всегда используйте -n
перед запуском фактической команды, поскольку она покажет вам, какие файлы будут удалены.
git clean -n -d
git clean -f -d
По умолчанию, git clean
удалит только неотслеживаемые файлы, которые не игнорируются.Любой файл, соответствующий шаблону в вашем .gitignore или других файлах игнорирования, не будет удален.Если вы хотите удалить и эти файлы, вы можете добавить -x
к чистой команде.
git clean -f -d -x
Также доступен интерактивный режим. -i
с помощью чистой команды
git clean -x -i
Альтернативно
Если вы не уверены на 100%, что удаление вашей незафиксированной работы безопасно, вместо этого вы можете использовать сохранение.
git stash --all
Он также очистит ваш каталог, но даст вам возможность получить файлы в любой момент времени, используя тайник с применять или поп.Затем позже вы можете очистить свой тайник, используя:
git stash drop // or clean
Нормальный git clean
команда не удаляет неотслеживаемые файлы с помощью моего git version 2.9.0.windows.1
.
$ git clean -fdx # doesn't remove untracked files
$ git clean -fdx * # Append star then it works!
git clean -f to remove untracked files from working directory.
Я рассмотрел некоторые основы здесь, в своем блоге, git-intro-basic-команды
предлагаемая команда для Удаление неотслеживаемых файлов из документов git является мерзавец чистый
мерзавец чистый - Удаление неотслеживаемых файлов из рабочего дерева
Предлагаемый метод: Интерактивный режим с использованием git clean -i
чтобы мы могли контролировать это.посмотрим оставшиеся доступные варианты.
Доступные Варианты:
git clean
-d -f -i -n -q -e -x -X (can use either)
Объяснение:
1. -д
Удалите неотслеживаемые каталоги в дополнение к неотслеживаемым файлам.Если не отстраненный каталог управляется другим хранилищем GIT, он не удаляется по умолчанию.Используйте опцию -f дважды, если вы действительно хотите удалить такой каталог.
2.-f, --force
Если переменная конфигурации GIT Clean.RequireForce не установлена на false, GIT Clean откажется работать, если не указано -f, -n или -i.
3.-i, --интерактивный
Покажите, что будет сделано, и очистите файлы в интерактивном режиме.Подробности см. в разделе «Интерактивный режим».
4.-n, --пробный запуск
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
5.-к, --тихо
Будьте спокойны, сообщайте только об ошибках, а не об успешно удаленных файлах.
6.-e , --exclude=
В дополнение к тем, которые найдены в .gitignore (по каталогу) и $ git_dir/info/exclide, также рассмотрите эти шаблоны, чтобы быть в наборе действующих правил игнорирования.
7.-Икс
Не используйте стандартные правила игнорирования, прочитанные из .gitignore (по каталогу) и $ git_dir/info/exklide, но все еще используйте правила игнорирования, приведенные с параметрами -e.Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки.Это может быть использовано (возможно, в сочетании с RESET GIT) для создания нетронутого рабочего каталога для проверки чистой сборки.
8.-ИКС
Удалите только файлы, игнорируемые Git.Это может быть полезно для восстановления всего с нуля, но при сохранении файлов, созданных вручную.
Мы можем легко удалить локальные неотслеживаемые файлы из текущего рабочего дерева git, используя комментарии git ниже.
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
Пример:
git reset --hard HEAD
Ссылки:
- https://git-scm.com/docs/git-reset
- Как мне использовать «git reset --hard HEAD», чтобы вернуться к предыдущему коммиту?
- Сбросьте ветку локального репозитория, чтобы она была такой же, как HEAD удаленного репозитория.
- https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
Рекурсивно очистить репозиторий git и все подмодули.
Следующая команда будет очищать текущий репозиторий GIT и все его подмодули рекурсивно:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
ох-мой-шш с зш предоставляет эти замечательные псевдонимы через плагин git.Их также можно использовать в bash.
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
gclean
удаляет неотслеживаемые каталоги в дополнение к неотслеживаемым файлам.gpristine
жестко сбросить локальные изменения, удалить не отказавшиеся каталоги, не отбиваемые файлы и не используйте стандартные правила игнорирования, считанные из .gitignore (для каждого каталога) и $GIT_DIR/info/exclude, но все равно используйте правила игнорирования, заданные с параметром -e.Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки.Это можно использовать (возможно, в сочетании с git reset) для создания чистого рабочего каталога для тестирования чистой сборки..
git clean -f
удалит неотслеживаемые файлы из текущего git
git clean -fd
если вы хотите удалить каталоги и файлы, будут удалены только неотслеживаемые каталоги и файлы.
Примечание:Сначала перейдите в каталог и выберите ветку, которую хотите очистить.
-i
интерактивный режим, и он сообщит вам, что будет удалено, и вы сможете выбрать действие из списка.
Чистить файлы только [Папки не будут отображаться и не будут очищаться]:
$ git clean -i
Чистить файлы и папки:
$ git clean -d -i
-d
включая каталоги.
Если вы выберете c
из списка.Будут удалены файлы/папки, которые не отслеживаются, а также будут удалены файлы/папки, которые вы испортили.*
Например:Если вы реструктурируете папку на пульте и перенесете изменения на локальный компьютер.файлы/папки, созданные другими, изначально будут находиться в прошлой папке и в новой, которую вы реструктурируете.