Вопрос:

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

git branch git-branch

2041024 просмотра

30 ответа

134745 Репутация автора

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

Автор: Readonly Источник Размещён: 14.09.2008 09:06

Ответы (30)


84 плюса

34714 Репутация автора

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

Автор: Espo Размещён: 14.09.2008 09:08

391 плюса

16982 Репутация автора

8182 плюса

0 Репутация автора

Решение

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

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


Шаг 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в вашей конфигурации установлено значение «истина» (по умолчанию), нужно указать, -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опцию дважды, если вы действительно хотите удалить такой каталог.

Автор: Andreas Ericsson Размещён: 15.09.2008 05:32

890 плюса

9406 Репутация автора

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

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

Автор: robert.berger Размещён: 26.05.2009 08:59

221 плюса

7372 Репутация автора

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

git clean -d -f -f

Автор: Michał Szajbe Размещён: 25.01.2013 12:24

75 плюса

3984 Репутация автора

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

git clean -f {dir_path}

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

git clean -fxd {dir_path}

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

Автор: Vijay C Размещён: 24.09.2013 06:28

102 плюса

2787 Репутация автора

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

git clean -fdx

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

Автор: Oscar Fraxedas Размещён: 25.11.2013 02:16

439 плюса

10692 Репутация автора

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

git clean -i

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

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

git iclean

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

Автор: SystematicFrank Размещён: 30.12.2013 08:12

128 плюса

4707 Репутация автора

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

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

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

Автор: hiroshi Размещён: 11.01.2014 12:41

50 плюса

934 Репутация автора

git clean -fd удаляет каталог

git clean -fX удаляет проигнорированные файлы

git clean -fx удаляет проигнорированные и не проигнорированные файлы

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

git clean -fdXx

проверьте руководство git для получения дополнительной помощи

Автор: Pooja Размещён: 22.01.2015 06:33

33 плюса

851 Репутация автора

Лучше всего использовать git clean

git clean -d -x -f

Это удаляет неотслеживаемые файлы, включая каталоги (-d)и файлы, которые игнорируются git (-x).

Кроме того, замените -fаргумент, -nчтобы выполнить интерактивный режим dry-runили -iдля интерактивного режима, и он скажет вам, что будет удалено.

Автор: Chhabilal Размещён: 16.04.2015 06:49

16 плюса

5201 Репутация автора

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.

Автор: Nikita Leonov Размещён: 02.12.2015 05:57

10 плюса

749 Репутация автора

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

git clean -d -n

Это выведет что-то вроде:

Удалил sample.txt

To delete everything listed in the output of the previous command:

git clean -d -f

It will output something like:

Removing sample.txt

Автор: Omar Mowafi Размещён: 16.02.2016 08:42

14 плюса

903 Репутация автора

Lifehack для такой ситуации, которую я только что изобрел и попробовал (это прекрасно работает):

git add .
git reset --hard HEAD

Осторожно! Обязательно передайте все необходимые изменения (даже в неотслеживаемых файлах) перед выполнением этого .

Автор: thybzi Размещён: 21.02.2016 05:29

13 плюса

524 Репутация автора

Если вы просто хотите удалить файлы, перечисленные как неотслеживаемые «git status»

git stash save -u
git stash drop "stash@{0}"

Я предпочитаю это «git clean», потому что «git clean» удалит файлы, игнорируемые git, поэтому при следующей сборке вам придется перестраивать все, и вы можете потерять настройки IDE.

Автор: jazzdev Размещён: 02.03.2016 02:09

186 плюса

5189 Репутация автора

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

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

git add --all
git reset --hard HEAD

Автор: Thanga Размещён: 03.06.2016 12:16

16 плюса

595 Репутация автора

У меня работали только следующие:

git clean -ffdx

Во всех остальных случаях я получал сообщение «Пропуск каталога» для некоторых подкаталогов.

Автор: rahul286 Размещён: 16.08.2016 03:29

5 плюса

2461 Репутация автора

Normal git clean command doesn't remove untracked files with my git version 2.9.0.windows.1.

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!
Автор: kujiy Размещён: 11.10.2016 12:14

8 плюса

484 Репутация автора

To remove the untracked files you should first use command to view the files that will be affected by cleaning

git clean -fdn

This will show you the list of files that will be deleted. Now to actually delete those files use this command:

git clean -fd
Автор: Gaurav Размещён: 25.10.2016 09:09

1 плюс

827 Репутация автора

Примечание. Сначала перейдите в каталог и извлеките ветку, которую хотите очистить.

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

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

  2. Для очистки файлов и папок : $ git clean -d -i

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


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

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

Автор: Gnanasekar S Размещён: 16.12.2016 03:05

41 плюса

27611 Репутация автора

Удалите все лишние папки и файлы в этом репо + подмодули

Это приводит вас в то же состояние, что и свежий клон.

git clean -ffdx

Удалите все дополнительные папки и файлы в этом репо, но не его подмодули

git clean -fdx

Удалить только лишние папки, но не файлы (например, папка сборки)

git clean -fd

Удалите лишние папки + пропущенные файлы (но не новые файлы)

Если файл не был проигнорирован и еще не зарегистрирован, он остается. Обратите внимание на заглавную X.

git clean -fdX

Новый интерактивный режим

git clean
Автор: Shital Shah Размещён: 12.02.2017 08:33

5 плюса

566 Репутация автора

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

I have covered some basics here in my blog, git-intro-basic-commands

Автор: ysk Размещён: 16.02.2017 09:05

21 плюса

840 Репутация автора

Пользовательский интерактивный подход:

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 или --dry-run, чтобы просто проверить, что он будет делать.

Автор: bit_cracker007 Размещён: 02.03.2017 08:09

38 плюса

56585 Репутация автора

ОК, удалить ненужные неотслеживаемые файлы и папки легко gitв командной строке, просто сделайте это так:

git clean -fd

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

Также в этом случае -fозначает силу и -dозначает каталог ...

Итак, если вы хотите удалить только файлы, вы можете использовать -fтолько:

git clean -f

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

git clean -fd

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

А добавление -iфлага заставляет git запрашивать разрешение на удаление файлов один за другим на ходу.

Если вы не уверены и хотите сначала проверить, добавьте -nфлаг.

Используйте, -qесли вы не хотите видеть какой-либо отчет после успешного удаления.

Я также создаю изображение ниже, чтобы сделать его более запоминающимся, особенно я видел, как многие люди -fиногда путают в очистке папки или как-то перепутывают!


удаление ненужных неотслеживаемых файлов и папок

Автор: Alireza Размещён: 20.07.2017 04:42

5 плюса

8349 Репутация автора

uggested Command for Removing Untracked Files from git docs is git clean

git clean - Remove untracked files from the working tree

Предлагаемый метод: использование Интерактивного режима, 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.-х

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

8. -X

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

Автор: Silent Spectator Размещён: 01.09.2017 06:23

3 плюса

1167 Репутация автора

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

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

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
Автор: Sergey Размещён: 25.09.2017 04:25

6 плюса

7246 Репутация автора

Be careful while running `git clean` command.

Always use -n before running the actual command as it will show you what files would get removed.

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

By default, git clean will only remove untracked files that are not ignored. Any file that matches a pattern in your .gitignore or other ignore files will not be removed. If you want to remove those files too, you can add a -x to the clean command.

git clean -f -d -x

There is also interactive mode available -i with the clean command

git clean -x -i

Alternatively

If you are not 100% sure that deleting your uncommitted work is safe, you could use stashing instead

git stash --all

It will also clear your directory but give you flexibility to retrieve the files at any point in time using stash with apply or pop. Then at later point you could clear your stash using:

git stash drop // or clean
Автор: DevWL Размещён: 21.10.2017 09:44

3 плюса

4079 Репутация автора

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) для создания первичного рабочего каталога для тестирования чистой сборки .
Автор: ZenLulz Размещён: 02.11.2017 08:24

5 плюса

2070 Репутация автора

Мы можем легко удалить локальные неотслеживаемые файлы из текущего рабочего дерева 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. Сбросить ветку локального репозитория, чтобы она была похожа на заголовок удаленного репозитория
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
Автор: Elangovan Размещён: 04.12.2017 06:30

2 плюса

397 Репутация автора

git clean -f

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

git clean -fd

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

Автор: sudhir Vishwakarma Размещён: 18.05.2018 06:04
32x32