Как удалить ненужные локальные файлы из текущего рабочего дерева?
В соответствии с документацией 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
- сила
Если переменная конфигурации Git clean.requireForce не установлена в false, Git clean откажется запускаться, если не указано -f, -n или -i.
-x
Не используйте стандартные правила игнорирования, считанные из .gitignore (для каждого каталога) и $GIT_DIR/info/exclude, но все равно используйте правила игнорирования, заданные с параметрами -e. Это позволяет удалить все необработанные файлы, включая сборку продуктов. Это можно использовать (возможно, в сочетании с Git reset), чтобы создать нетронутый рабочий каталог для проверки чистой сборки.
-X
Удалить только файлы, игнорируемые Git. Это может быть полезно для восстановления всего с нуля, но сохранить вручную созданные файлы.
-n
- всухую
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
-d
Удалите ненужные каталоги в дополнение к необработанным файлам. Если неподписанный каталог управляется другим репозиторием Git, он по умолчанию не удаляется. Используйте параметр -f дважды, если вы действительно хотите удалить такой каталог.
git clean -f
работает только в каталоге, где он называется (и подкаталогах). Если вы хотите очистить всю рабочую копию, вам следует вызвать ее в корневой каталог.
Используйте git clean -f -d
, чтобы убедиться, что каталоги также удалены.
Затем вы можете проверить, действительно ли ваши файлы прошли с помощью git status
.
git clean -n -d
git clean -nd
и git clean -fd
.
Я удивлен, что никто не упоминал об этом раньше:
git clean -i
Это означает интерактивность, и вы получите краткий обзор того, что будет удалено, предлагая вам возможность включить/исключить затронутые файлы. В целом, все еще быстрее, чем запуск обязательного --dry-run
до реальной очистки.
Вам нужно будет бросить в -d
, если вы также захотите позаботиться о пустых папках. В конце он делает хороший псевдоним:
git iclean
Таким образом, дополнительное ручное проведение интерактивных команд может утомиться для опытных пользователей. В эти дни я просто использую уже упомянутый git clean -fd
Если untracked-каталог представляет собой собственный хранилище git (например, подмодуль), вам нужно дважды использовать -f
:
git clean -d -f -f
Чтобы удалить все неотслеживаемые файлы, простой способ - сначала добавить их все и сбросить репозиторий, как показано ниже.
git add --all
git reset --hard HEAD
git add --all
на git add .
, Таким образом, вы можете сделать это более коротким способом в oneline git add . && git reset --hard HEAD
(будьте очень осторожны с этой командой) .
git clean
?
Мне нравится git stash push -u
потому что вы можете отменить их все с помощью git stash pop
.
РЕДАКТИРОВАТЬ: Также я нашел способ показать неотслеживаемый файл в тайнике (например, git show stash@{0}^3
) https://stackoverflow.com/questions/12681529/in-git-is-there-a-way-to-show-untracked-stashed-files-without-applying-the-stas
EDIT2: git stash save
устарело в пользу push
. Спасибо @script-волк.
-u
эквивалентно --include-untracked
. Вы можете найти помощь с git help stash
.
Это то, что я всегда использую:
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 -fdXx
выдает сообщение об ошибке «fatal: -x и -X нельзя использовать вместе» (используя git-2.8). Для вашего последнего предложения в вашем ответе, пожалуйста, предоставьте ссылку на руководство git. ура
Удалите все лишние папки и файлы в этом репо + подмодули
Это приводит вас в то же состояние, что и свежий клон.
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
заставляет git запрашивать разрешение на удаление файлов один за другим на ходу.
Если вы не уверены и хотите сначала все проверить, добавьте флаг -n
.
Используйте -q
если вы не хотите видеть какой-либо отчет после успешного удаления.
Я также создаю изображение ниже, чтобы сделать его более запоминающимся, особенно я видел, как многие люди путают -f
с очисткой папки или как-то путают!
Лучше всего использовать: 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
-i для интерактивных
-f для силы
-d для каталога
-x для игнорируемых файлов (добавьте, если требуется)
Примечание: Добавить -n или - сухим, чтобы просто проверить, что он будет делать.
Для меня только после работы:
git clean -ffdx
Во всех остальных случаях я получал сообщение "Skipping Directory" для некоторых подкаталогов.
-x
и просто использовал git clean -ffd
чтобы избежать удаления файлов в .gitignore.
-ff
ftw. Понятия не имел - спасибо!
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 status'
git stash save -u
git stash drop "stash@{0}"
Я предпочитаю это "git clean", потому что "git clean" удалит файлы игнорируется git, поэтому вашей следующей сборке придется перестроить все и вы также можете потерять настройки IDE.
Жизнеспособность для такой ситуации я только что придумал и попробовал (что прекрасно работает):
git add .
git reset --hard HEAD
Осторожно! Обязательно скопировать любые необходимые изменения (даже в неискренные файлы) перед выполнением этого.git add .
git commit -m 'about to delete'
git reset --hard HEAD~
git add . && git reset --hard HEAD
Чтобы узнать, что будет удалено до фактического удаления:
git clean -d -n
Он выведет что-то вроде:
Удалит sample.txt
Чтобы удалить все, перечисленные в выводе предыдущей команды:
git clean -d -f
Он выведет что-то вроде:
Удаление sample.txt
Чтобы удалить неиспользуемые файлы, вы должны сначала использовать команду для просмотра файлов, на которые будет влиять очистка
git clean -fdn
Это покажет вам список файлов, которые будут удалены. Теперь, чтобы фактически удалить эти файлы, используйте следующую команду:
git clean -fd
Кто-то должен действительно упомянуть:
git clean [<options>]
Я прав?
Всегда используйте -n
перед запуском фактической команды, показывая, какие файлы будут удалены.
git clean -n -d
git clean -f -d
По умолчанию git clean
будет удалять только неиспользуемые файлы, которые не игнорируются. Любой файл, который соответствует шаблону в ваших .gitignore или других файлах игнорирования, не будет удален. Если вы хотите также удалить эти файлы, вы можете добавить команду -x
в чистую команду.
git clean -f -d -x
Существует также интерактивный режим -i
с чистой командой
git clean -x -i
Если вы не на 100% уверены, что удаление вашей незавершенной работы безопасно, вы можете вместо этого использовать stashing
git stash --all
Он также очистит ваш каталог, но даст вам гибкость для извлечения файлов в любой момент времени с помощью stash с применить или поп. Затем в более позднем пункте вы можете очистить свой тайник, используя:
git stash drop // or clean
Мы можем легко удалить локальные неотслеживаемые файлы из текущего рабочего дерева git, используя приведенные ниже комментарии git.
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
Пример:
git reset --hard HEAD
Ссылки:
ued Команда Удаление необработанных файлов из git docs git clean
git clean - удалить неработающие файлы из рабочего дерева
Предлагаемый метод: Режим взаимодействия с помощью git clean -i
поэтому мы можем контролировать его. посмотрим оставшиеся доступные варианты.
Доступные параметры:
git clean
-d -f -i -n -q -e -x -X (can use either)
Объяснение:
1. -d
Удалите ненужные каталоги в дополнение к необработанным файлам. Если неподписанный каталог управляется другим хранилищем git, он не удаляется по умолчанию. Используйте параметр -f дважды, если вы действительно хотите удалить такой каталог.
2. -f, --force
Если переменная конфигурации git clean.requireForce не установлена в false, git clean откажется запускаться, если не указано -f, -n или -i.
3. -i, --interactive
Показать, что будет сделано и очистить файлы в интерактивном режиме. Подробнее см. "Интерактивный режим".
4. -n, --dry-run
На самом деле ничего не удаляйте, просто покажите, что будет сделано.
5. -q, --quiet
Будьте спокойны, только сообщайте об ошибках, но не удаляйте файлы.
6. -e, --exclude =
Помимо найденных в .gitignore (для каждого каталога) и $GIT_DIR/info/exclude, также рассмотрите эти шаблоны в набор действующих правил игнорирования.
7. -x
Не используйте стандартные правила игнорирования, считанные из .gitignore (для каждого каталога) и $GIT_DIR/info/exclude, но все равно используйте игнорирование правила, заданные с параметрами -e. Это позволяет удалить все необработанные файлы, включая сборку продуктов. Это можно использовать (возможно, в совместно с git reset), чтобы создать нетронутый рабочий каталог для проверки чистой сборки.
8. -X
Удалить только файлы, игнорируемые Git. Это может быть полезно для восстановления всего с нуля, но сохранить вручную созданные файлы.
git clean -f to remove untracked files from working directory.
Я рассмотрел некоторые основы здесь, в моем блоге, git-intro-basic-commands
Обычная команда 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!
oh-my-zsh с zsh предоставляет эти отличные псевдонимы через плагин git. Их также можно использовать в bash.
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
gclean
удаляет неотслеживаемые каталоги в дополнение к неотслеживаемым файлам.gpristine
жестко сбрасывает локальные изменения, удаляет неотслеживаемые каталоги, неотслеживаемые файлы и не использует стандартные правила игнорирования, считываемые из .gitignore (для каждого каталога) и $ GIT_DIR/info/exclude, но все же использует правила игнорирования, заданные с помощью -e опции. Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки. Это может быть использовано (возможно, в сочетании с git reset) для создания первичного рабочего каталога для тестирования чистой сборки.zsh
? Это должно работать и в bash
...
bash
. Я отредактировал свой ответ, чтобы отразить это.
Очистить git-репозиторий и все подмодули рекурсивно
Следующая команда рекурсивно очистит текущий репозиторий git и все его подмодули:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
Мне нравится использовать команду git stash
, позже вы можете получить спрятанные файлы и изменения. git clean
также хороший вариант, но полностью зависит от ваших требований. Вот объяснение git stash и git clean, 7.3 Git Tools - Копирование и очистка
Мне не удалось использовать самые популярные ответы здесь - git все равно не удаляет неотслеживаемые файлы из хранилища. Понятия не имею почему. Это мой супер упрощенный ответ без СПЕЦИАЛЬНЫХ КОМАНД GIT!
Миссия: удалить неотслеживаемые файлы из репозитория git:
Все файлы и папки были удалены из хранилища.
Давайте восстановим их на localhost, если они вам нужны:
Вы сделали!
git clean -f
удалит неотслеживаемые файлы из текущего git
git clean -fd
когда вы хотите удалить каталоги и файлы, это приведет к удалению только неотслеживаемых каталогов и файлов
используйте git reset HEAD <file>
, чтобы отключить файл
Примечание. Сначала перейдите в каталог и проверите ветку, которую вы хотите очистить.
-i
интерактивный режим, и он расскажет вам, что будет удалено, и вы можете выбрать действие из списка.
Только для очистки файлов [Папки не будут перечислены и не будут очищены]:
$ git clean -i
Очистить файлы и папки:
$ git clean -d -i
-d
включая каталоги.
Если вы выберете c
из списка. Файлы/папки будут удалены, которые не будут отслеживаться, а также удалите файлы/папки, которые вы испортили. *
Например: если вы реструктурируете папку на своем пульте дистанционного управления и переместите изменения на локальный компьютер. файлы/папки, созданные другими изначально, будут находиться в прошлой папке и в новой, которую вы реструктурируете.
Ни одна из опций git clean не работает для меня. В итоге я удалил все, кроме папки .git, а затем восстановил проект с помощью простого git checkout .
Вы также можете использовать rm
: rm -rf filename
git clean
теперь имеет интерактивный режим! Смотрите мой ответ на этот другой вопрос : git 1.8.4+