Как удалить локальные (неотслеживаемые) файлы из текущего рабочего дерева Git?
Как вы удаляете неотслеживаемые локальные файлы из вашего текущего рабочего дерева?
41 ответ
Согласно документации Git Git Clean
Удалить неотслеживаемые файлы из рабочего дерева
Шаг 1, чтобы показать, что будет удалено с помощью -n
опция:
git clean -n
Чистый шаг - будьте осторожны: это удалит файлы:
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.
-Икс
Не используйте стандартные правила игнорирования, считанные из.gitignore (для каждого каталога) и $GIT_DIR/info/exclude, но все же используйте правила игнорирования, заданные с опциями -e. Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки. Это может быть использовано (возможно, в сочетании с git reset) для создания первичного рабочего каталога для тестирования чистой сборки.
-ИКС
Удалите только файлы, игнорируемые Git. Это может быть полезно для восстановления всего с нуля, но сохраняйте созданные вручную файлы.
-n
--пробный прогон
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
-d
Удалите неотслеживаемые каталоги в дополнение к неотслеживаемым файлам. Если неотслеживаемый каталог управляется другим Git-репозиторием, по умолчанию он не удаляется. Используйте параметр -f дважды, если вы действительно хотите удалить такой каталог.
Использование git clean -f -d
чтобы убедиться, что каталоги также удалены.
Затем вы можете проверить, действительно ли ваши файлы исчезли с git status
,
Я удивлен, что никто не упомянул об этом раньше:
git clean -i
Это означает интерактивный, и вы получите быстрый обзор того, что будет удалено, предлагая вам возможность включать / исключать затронутые файлы. В целом, все еще быстрее, чем работает обязательный --dry-run
до настоящей уборки.
Вам придется бросить в -d
если вы также хотите позаботиться о пустых папках. В конце концов, это дает хороший псевдоним:
git iclean
Это сказанное, дополнительное удерживание руки интерактивных команд может быть утомительным для опытных пользователей. В эти дни я просто пользуюсь уже упомянутым git clean -fd
Простой способ удалить неотслеживаемые файлы
Чтобы удалить все неотслеживаемые файлы, простой способ - сначала добавить их все и сбросить репозиторий, как показано ниже.
git add --all git reset --hard HEAD
Если неотслеживаемый каталог является собственным репозиторием git (например, подмодулем), вам нужно использовать -f
дважды:
git clean -d -f -f
Это то, что я всегда использую:
git clean -fdx
Для очень большого проекта вы можете запустить его пару раз.
Мне нравится git stash push -u
потому что вы можете отменить их все с git stash pop
,
РЕДАКТИРОВАТЬ: Также я нашел способ показать неотслеживаемый файл в тайнике (например, git show stash@{0}^3
) /questions/26090966/v-git-est-li-sposob-pokazat-neotslezhivaemyie-spryatannyie-fajlyi-bez-primeneniya-kesha/26090990#26090990
EDIT2: git stash save
не рекомендуется в пользу push
, Спасибо @script-волк.
Будьте внимательны при выполнении команды `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
Это также очистит ваш каталог, но даст вам возможность извлекать файлы в любой момент времени, используя stash с apply или pop. Затем на более позднем этапе вы можете очистить свой тайник, используя:
git stash drop // or clean
git-clean - это то, что вы ищете. Используется для удаления неотслеживаемых файлов из рабочего дерева.
Если необходимо удалить неотслеживаемые файлы из определенного подкаталога,
git clean -f {dir_path}
И комбинированный способ удаления неотслеживаемых dir/files и игнорируемых файлов.
git clean -fxd {dir_path}
после этого вы будете изменять файлы только в git status
,
Удалите все лишние папки и файлы в этом репо + подмодули
Это приводит вас в то же состояние, что и свежий клон.
git clean -ffdx
Удалите все дополнительные папки и файлы в этом репо, но не его подмодули
git clean -fdx
Удалить только лишние папки, но не файлы (например, папка сборки)
git clean -fd
Удалите лишние папки + пропущенные файлы (но не новые файлы)
Если файл не был проигнорирован и еще не зарегистрирован, он остается. Обратите внимание на заглавную X.
git clean -fdX
Новый интерактивный режим
git clean
ОК, удалить ненужные неотслеживаемые файлы и папки легко git
в командной строке просто сделайте это так:
git clean -fd
Дважды проверьте, прежде чем делать это, так как он удалит файлы и папки, не делая истории...
Также в этом случае -f
выступает за силу и -d
обозначает каталог...
Итак, если вы хотите удалить только файлы, вы можете использовать -f
только:
git clean -f
Если вы хотите удалить (каталоги) и файлы, вы можете удалить только неотслеживаемые каталоги и файлы, например:
git clean -fd
Также вы можете использовать -x
флаг для включения файлов, которые игнорируются git. Это было бы полезно, если вы хотите удалить все.
И добавление -i
flag, заставляет git запрашивать разрешение на удаление файлов один за другим на ходу.
Если вы не уверены и хотите сначала проверить, добавьте -n
флаг.
использование -q
если вы не хотите видеть какой-либо отчет после успешного удаления.
Я также создаю изображение ниже, чтобы сделать его более запоминающимся, особенно я видел, как многие люди путают -f
для очистки папки иногда или как-то перепутать!
git clean -fd
удаляет каталог
git clean -fX
удаляет проигнорированные файлы
git clean -fx
удаляет проигнорированные и не проигнорированные файлы
могут быть использованы все вышеперечисленные варианты в комбинации как
git clean -fdXx
проверьте руководство git для получения дополнительной помощи
Лучше всего использовать git clean
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
-я для интерактива
-ф для силы
-d для каталога
-x для игнорируемых файлов (добавьте, если требуется)
Примечание: добавьте -n или --dry-run, чтобы просто проверить, что он будет делать.
Чтобы удалить неотслеживаемые файлы:
git add .
git reset --hard HEAD
Lifehack для такой ситуации, которую я только что изобрел и попробовал (это прекрасно работает):
git add .
git reset --hard HEAD
Осторожно! Обязательно передайте все необходимые изменения (даже в неотслеживаемых файлах) перед выполнением этого.
У меня работали только следующие:
git clean -ffdx
Во всех остальных случаях я получал сообщение "Пропуск каталога" для некоторых подкаталогов.
git clean -f -d -x $(git rev-parse --show-cdup)
применяется clean к корневому каталогу, независимо от того, где вы вызываете его в дереве каталогов репозитория. Я использую его все время, так как он не заставляет вас покидать папку, в которой вы сейчас работаете, и позволяет очищать и фиксировать прямо из того места, где вы находитесь.
Будь уверен что флаги -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 status"
git stash save -u
git stash drop "stash@{0}"
Я предпочитаю это "git clean", потому что "git clean" удалит файлы, игнорируемые git, поэтому ваша следующая сборка должна будет перестроить все, и вы также можете потерять настройки IDE.
git add --all
,
git stash
а также
git stash drop
попробуйте эти три команды в указанном порядке, чтобы удалить все неотслеживаемые файлы. При добавлении всех этих неотслеживаемых файлов в git и их сохранении все эти неотслеживаемые файлы перемещаются в список тайников, а при удалении первого, т.е. stash@{0}, сохраненные изменения удаляются из списка тайников.
Чтобы узнать, что будет удалено перед тем, как фактически удалить:
git clean -d -n
Это выведет что-то вроде:
Удалил sample.txt
Чтобы удалить все, что перечислено в выводе предыдущей команды:
git clean -d -f
Это выведет что-то вроде:
Удаление файла sample.txt
Чтобы удалить неотслеживаемые файлы, вы должны сначала использовать команду для просмотра файлов, которые будут затронуты очисткой
git clean -fdn
Это покажет вам список файлов, которые будут удалены. Теперь, чтобы фактически удалить эти файлы, используйте эту команду:
git clean -fd
Команда для удаления неотслеживаемых файлов из git docs - это git clean
git clean - удаляет неотслеживаемые файлы из рабочего дерева
Предлагаемый метод: Интерактивный режим с использованием 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, --dry-run
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
5. -q, --quiet
Будьте спокойны, сообщайте только об ошибках, но не о файлах, которые были успешно удалены.
6. -e, --exclude =
В дополнение к тем, которые есть в.gitignore (для каждого каталога) и в $GIT_DIR/info/exclude, также следует учитывать, что эти шаблоны входят в набор действующих правил игнорирования.
7.-х
Не используйте стандартные правила игнорирования, считанные из.gitignore (для каждого каталога) и $GIT_DIR/info/exclude, но все же используйте правила игнорирования, заданные с опциями -e. Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки. Это может быть использовано (возможно, в сочетании с git reset) для создания первичного рабочего каталога для тестирования чистой сборки.
8. -X
Удалите только файлы, игнорируемые Git. Это может быть полезно для восстановления всего с нуля, но сохраняйте созданные вручную файлы.
git clean -f to remove untracked files from working directory.
Здесь я рассмотрел некоторые основы в своем блоге, git-intro-basic-команды
Нормальный 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, используя приведенные ниже комментарии 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', чтобы вернуться к предыдущему коммиту?
- Сбросить ветку локального репозитория так, чтобы она была похожа на заголовок удаленного репозитория
- https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
Я думаю, что это самый простой и безопасный способ!
git add .
git stash
Для получения дополнительной информации https://www.atlassian.com/git/tutorials/saving-changes/git-stash#stashing-your-work
Очистить git-репозиторий и все подмодули рекурсивно
Следующая команда рекурсивно очистит текущий репозиторий git и все его подмодули:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)