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

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

Ответы [ 34 ]

8 голосов
/ 25 октября 2016

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

git clean -fdn

Это покажет вам список файлов, которые будут удалены. Теперь, чтобы фактически удалить эти файлы, используйте эту команду:

git clean -fd
6 голосов
/ 22 октября 2017

Будьте внимательны при выполнении команды `git clean`.

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

git clean -n -d 
git clean -f -d

По умолчанию git clean удаляет только неотслеживаемые файлы, которые не игнорируются. Любой файл, который соответствует шаблону в вашем .gitignore или других игнорируемых файлах, не будет удален. Если вы тоже хотите удалить эти файлы, вы можете добавить -x к команде clean.

git clean -f -d -x

Также доступен интерактивный режим -i с командой clean

git clean -x -i

С другой стороны

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

git stash --all

Это также очистит ваш каталог, но даст вам возможность извлекать файлы в любой момент времени, используя stash с apply или pop . Затем на более позднем этапе вы можете очистить свой тайник, используя:

git stash drop // or clean
5 голосов
/ 16 февраля 2017

git clean -f to remove untracked files from working directory.

Я рассмотрел некоторые основы здесь, в моем блоге, git-intro-basic-команды

5 голосов
/ 11 октября 2016

Обычная 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!
5 голосов
/ 04 декабря 2017

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

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

Пример:

git reset --hard HEAD

Ссылки:

  1. https://git -scm.com / Docs / ГИТ-сброс
  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
5 голосов
/ 01 сентября 2017
Команда

uggested для Удаление неотслеживаемых файлов из git docs is 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, - интерактивно

Показать, что будет сделано, и очистить файлы в интерактивном режиме. Подробнее см. «Интерактивный режим».

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. Это может быть полезно для восстановления всего с нуля, но сохраняйте созданные вручную файлы.

3 голосов
/ 02 ноября 2017

oh-my-zsh с zsh предоставляет эти отличные псевдонимы через плагин git. Их можно использовать и в bash.

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean удаляет неотслеживаемые каталоги в дополнение к неотслеживаемым файлам .
  • gpristine hard reset локальных изменений, удаление неотслеживаемых каталогов, неотслеживаемые файлы и не используют стандартные правила игнорирования, считанные из .gitignore (для каждого каталога) и $ GIT_DIR / info / exclude, но все же используют правила игнорирования, заданные с опциями -e Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки. Это может быть использовано (возможно, в сочетании с git reset), чтобы создать чистый рабочий каталог для тестирования чистой сборки .
3 голосов
/ 25 сентября 2017

Рекурсивно очистить репозиторий git и все его подмодули

Следующая команда очистит текущий репозиторий git и все его подмодули:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
2 голосов
/ 18 мая 2018
git clean -f

удалит неотслеживаемые файлы из текущего git

git clean -fd

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

1 голос
/ 11 ноября 2018

Мне нравится использовать команду git stash, позже вы можете получить спрятанные файлы и изменения. git clean также хороший вариант, но полностью зависит от ваших требований. Вот объяснение git stash и git clean, 7.3 Git Tools - Копирование и очистка

...