Как удалить локальные (неотслеживаемые) файлы из текущего рабочего дерева Git?

StackOverflow https://stackoverflow.com/questions/61212

  •  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 для очистки папки иногда или перепутайте как-нибудь!


deleting unwanted untracked files and folder

Лучшим способом является использование:мерзавец чистый

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

Ссылки:

  1. https://git-scm.com/docs/git-reset
  2. Как мне использовать «git reset --hard HEAD», чтобы вернуться к предыдущему коммиту?
  3. Сбросьте ветку локального репозитория, чтобы она была такой же, как HEAD удаленного репозитория.
  4. 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 интерактивный режим, и он сообщит вам, что будет удалено, и вы сможете выбрать действие из списка.

  1. Чистить файлы только [Папки не будут отображаться и не будут очищаться]:$ git clean -i

  2. Чистить файлы и папки: $ git clean -d -i

-d включая каталоги.


Если вы выберете c из списка.Будут удалены файлы/папки, которые не отслеживаются, а также будут удалены файлы/папки, которые вы испортили.*

Например:Если вы реструктурируете папку на пульте и перенесете изменения на локальный компьютер.файлы/папки, созданные другими, изначально будут находиться в прошлой папке и в новой, которую вы реструктурируете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top