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

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

Ответы [ 34 ]

8180 голосов
/ 15 сентября 2008

Согласно документации Git git clean

Удалить неотслеживаемые файлы из рабочего дерева


Шаг 1 - показать, что будет удалено с помощью опции -n:

# Print out the list of files which will be removed (dry run)
git clean -n

Clean Step - Остерегайтесь: это удалит файлы :

# 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 опциями. Это позволяет удалить все неотслеживаемые файлы, в том числе строительные продукты. Это может быть использовано (возможно, в сочетании с git reset), чтобы создать нетронутую рабочую директорию, чтобы проверить чистоту строить.

-X

Удалить только файлы, игнорируемые Git. Это может быть полезно для восстановления все с нуля, но сохраняйте созданные вручную файлы.

-n, -dry-run

На самом деле ничего не удаляйте, просто покажите, что будет сделано.

-d

Удалите неотслеживаемые каталоги в дополнение к неотслеживаемым файлам. Если нетронутым каталогом управляет другой Git-репозиторий, он по умолчанию не удаляется. Используйте параметр -f дважды, если вы действительно хотите удалить такой каталог.

890 голосов
/ 27 мая 2009

Используйте git clean -f -d, чтобы убедиться, что каталоги также удалены.

Затем вы можете проверить, действительно ли ваши файлы исчезли с git status.

439 голосов
/ 31 декабря 2013

Я удивлен, что никто не упоминал об этом раньше:

git clean -i

Это означает интерактивный , и вы получите быстрый обзор того, что будет удалено, предлагая вам возможность включить / исключить затронутые файлы. В целом, все еще быстрее, чем выполнение обязательной --dry-run перед реальной очисткой.

Вам придется добавить -d, если вы также хотите позаботиться о пустых папках. В конце это дает хороший псевдоним:

git iclean

При этом дополнительное удержание интерактивных команд может быть утомительным для опытных пользователей. В эти дни я просто использую уже упомянутый git clean -fd

391 голосов
/ 14 сентября 2008
220 голосов
/ 25 января 2013

Если неотслеживаемый каталог является собственным репозиторием git (например, подмодулем), вам нужно дважды использовать -f:

git clean -d -f -f

185 голосов
/ 03 июня 2016

Простой способ удалить неотслеживаемые файлы

Чтобы удалить все неотслеживаемые файлы, The Simple способ сначала добавить их все и сбросить репо как показано ниже

git add --all
git reset --hard HEAD

128 голосов
/ 11 января 2014

Мне нравится git stash push -u, потому что вы можете отменить их все с помощью git stash pop.

РЕДАКТИРОВАТЬ: Также я нашел способ показать неотслеживаемый файл в тайнике (например, git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986

EDIT2: git stash save устарела в пользу push. Спасибо @ script-wolf.

102 голосов
/ 25 ноября 2013

Это то, что я всегда использую:

git clean -fdx

Для очень большого проекта вы можете запустить его пару раз.

84 голосов
/ 14 сентября 2008

git-clean - это то, что вы ищете. Используется для удаления неотслеживаемых файлов из рабочего дерева.

75 голосов
/ 24 сентября 2013

Если необходимо удалить неотслеживаемые файлы из определенного подкаталога,

git clean -f {dir_path}

И комбинированный способ удаления неотслеживаемых dir / файлов и игнорируемых файлов.

git clean -fxd {dir_path}

после этого вы будете изменять файлы только в git status.

...