Як видалити локальні (не відслідковуються) файли з поточного робочого дерева Git?

Як видалити непотрібні локальні файли з поточного робочого дерева?

6113
14 сент. заданий Readonly 14 сент. 2008-09-14 12:06 '08 о 12:06 2008-09-14 12:06
@ 36 відповідей
  • 1
  • 2

Відповідно до документації 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 двічі, якщо ви дійсно хочете видалити такий каталог.

7973
15 сент. відповідь дан Andreas Ericsson 15 сент. 2008-09-15 20:32 '08 о 20:32 2008-09-15 20:32

Використовуйте git clean -f -d , щоб переконатися, що каталоги також вилучені.

border=0

Потім ви можете перевірити, чи дійсно ваші файли пройшли за допомогою git status .

866
26 мая '09 в 23:59 2009-05-26 23:59 відповідь дан robert.berger 26 травня '09 о 23:59 2009-05-26 23:59

Я здивований, що ніхто не згадував про це раніше:

 git clean -i 

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

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

 git iclean 

Таким чином, додаткове ручне проведення інтерактивних команд може стомитися для досвідчених користувачів. У ці дні я просто використовую вже згаданий git clean -fd

427
30 дек. відповідь дан SystematicFrank 30 дек. 2013-12-30 23:12 '14 о 23:12 2013-12-30 23:12
388
14 сент. відповідь дан Fire Lancer 14 сент. 2008-09-14 12:09 '08 в 12:09 2008-09-14 12:09

Якщо untracked-каталог являє собою власний сховище git (наприклад, подмодуль), вам потрібно двічі використовувати -f :

git clean -d -f -f

213
25 янв. відповідь дан Michał Szajbe 25 Січня. 2013-01-25 15:24 '13 о 15:24 2013-01-25 15:24

Простий спосіб видалити неотслежіваемих файли

Щоб видалити всі неотслежіваемих файли, простий спосіб - спочатку додати їх все і скинути репозиторій, як показано нижче.

 git add --all git reset --hard HEAD 

156
03 июня '16 в 15:16 2016-06-03 15:16 відповідь дан Thanga 03 червня '16 о 15:16 2016-06-03 15:16

Мені подобається git stash push -u бо ви можете скасувати їх усі за допомогою git stash pop .

РЕДАКТИРОВАТЬ: Також я знайшов спосіб показати неотслежіваемих файл в схованці (наприклад, git show stash@{0}^3 ) medican.site.site/questions/507 / ...

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

121
11 янв. відповідь дан hiroshi 11 Січня. 2014-01-11 03:41 '14 в 3:41 2014-01-11 3:41

Це те, що я завжди використовую:

 git clean -fdx 

Для дуже великого проекту ви можете запустити його кілька разів.

98
25 нояб. відповідь дан Oscar Fraxedas 25 нояб. 2013-11-25 17:16 '13 о 17:16 2013-11-25 17:16

git-clean - це те, що ви шукаєте. Він використовується для видалення необроблених файлів з робочого дерева.

83
14 сент. відповідь дан Espo 14 сент. 2008-09-14 12:08 '08 о 12:08 2008-09-14 12:08

Якщо необхідно видалити непідписані файли з певного підкаталогу,

 git clean -f {dir_path} 

І комбінований спосіб видалення невідтворених файлів / файлів і ігнорованих файлів.

 git clean -fxd {dir_path} 

після цього ви будете модифікувати файли тільки в git status .

73
24 сент. відповідь дан Vijay C 24 вересня. 2013-09-24 09:28 '13 о 9:28 2013-09-24 9:28

git clean -fd видаляє каталог

git clean -fX видаляє ігноровані файли

git clean -fX видаляє ігноровані і не проігноровані файли

можна використовувати всі перераховані вище опції в комбінації як

git clean -fdXx

перевірити git керівництво для отримання додаткової довідки

48
22 янв. відповідь дан Pooja 22 Січня. 2015-01-22 09:33 '15 в 9:33 2015-01-22 9:33

Видаліть всі зайві папки і файли в цьому репо + підмодулі

Це призводить вас в той же стан, що і свіжий клон.

 git clean -ffdx 

Видаліть всі додаткові папки і файли в цьому репо, але не його підмодулі

 git clean -fdx 

Видалити тільки зайві папки, але не файли (наприклад, папка збірки)

 git clean -fd 

Видаліть зайві папки + пропущені файли (але не нові файли)

Якщо файл не був проігнорований і ще не зареєстрований, він залишається. Зверніть увагу на заголовну X.

 git clean -fdX 

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

 git clean 
37
12 февр. відповідь дан Shital Shah 12 февр. 2017-02-12 11:33 '17 11:33 2017-02-12 11:33

ОК, видалити непотрібні неотслежіваемих файли і папки легко, використовуючи git в командному рядку, просто зробіть це так:

 git clean -fd 

Двічі перевірте, перш ніж робити це, тому що він буде видаляти файли і папки, не роблячи історії ...

Також в цьому випадку -f позначає силу, а -d позначає каталог ...

Отже, якщо ви хочете видалити тільки файли, ви можете використовувати тільки -f :

 git clean -f 

Якщо ви хочете видалити (каталоги) і файли, ви можете видалити тільки неотслежіваемих каталоги і файли, наприклад:

 git clean -fd 

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

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

Якщо ви не впевнені і хочете спочатку все перевірити, додайте прапор -n .

Використовуйте -q якщо ви не хочете бачити будь-якої звіт після успішного видалення.

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


2019

Найкраще використовувати: git clean

 git clean -d -x -f 

Це видаляє непотрібні файли, включаючи каталоги (-d) і файли, ігноровані git (-x) .

Також замініть аргумент -f на -n , щоб виконати інтерактивний режим dry-run або -i , і він скаже вам, що буде видалено.

32
16 апр. відповідь дан Chhabilal 16 Квітня. 2015-04-16 09:49 '15 в 9:49 2015-04-16 9:49

Призначений для користувача інтерактивний підхід:

 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 або - сухим, щоб просто перевірити, що він буде робити.

20
02 марта '17 в 23:09 2017-03-02 23:09 відповідь дан bit_cracker007 02 березня '17 о 23:09 2017-03-02 23:09

Для мене тільки після роботи:

 git clean -ffdx 

У всіх інших випадках я отримував повідомлення "Skipping Directory" для деяких підкаталогів.

15
16 авг. відповідь дан rahul286 16 Серпня. 2016-08-16 18:29 '16 о 18:29 2016-08-16 18:29

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. repository -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. to -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. set to -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. directories unless -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. is given -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. the removed submodule -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. from .gitignore -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 .

15
02 дек. відповідь дан Nikita Leonov 02 дек. 2015-12-02 20:57 '15 о 20:57 2015-12-02 20:57

Якщо ви просто хочете видалити файли, перераховані як неперевірені 'git status'

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

Я вважаю за краще це "git clean", тому що "git clean" видалить файли ігнорується git, тому вашої наступної збірці доведеться перебудувати все і ви також можете втратити налаштування IDE.

13
02 марта '16 в 5:09 2016-03-02 05:09 відповідь дан jazzdev 02 березня '16 в 5:09 2016-03-02 5:09

Життєздатність для такої ситуації я тільки що придумав і спробував (що прекрасно працює):

 git add . git reset --hard HEAD 
Обережно! Обов'язково скопіювати будь-які необхідні зміни (навіть в нещирості файли) перед виконанням цього.
13
21 февр. відповідь дан thybzi 21 февр. 2016-02-21 20:29 '16 о 20:29 2016-02-21 20:29

Щоб дізнатися, що буде видалено до фактичного видалення:

git clean -d -n

Він виведе щось на кшталт:

видалить sample.txt

Щоб видалити всі, перераховані у висновку попередньої команди:

git clean -d -f

Він виведе щось на кшталт:

видалення sample.txt

10
16 февр. відповідь дан Omar Mowafi 16 февр. 2016-02-16 11:42 '16 в 11:42 2016-02-16 11:42

Щоб видалити невикористовувані файли, ви повинні спочатку використовувати команду для перегляду файлів, на які впливатиме очищення

 git clean -fdn 

Це покаже вам список файлів, які будуть видалені. Тепер, щоб фактично видалити ці файли, використовуйте наступну команду:

 git clean -fd 
8
25 окт. відповідь дан Gaurav 25 Жовтня. 2016-10-25 12:09 '16 в 12:09 2016-10-25 12:09

Хтось повинен дійсно згадати:

 git clean [<options>] 

Я правий?

7
27 авг. відповідь дан joeytwiddle 27 Серпня. 2015-08-27 13:18 '15 о 13:18 2015-08-27 13:18

Будьте обережні при виконанні команди `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% впевнені, що видалення вашої незавершеною роботи безпечно, ви можете замість цього використовувати stashing

 git stash --all 

Він також очистить ваш каталог, але дасть вам гнучкість для вилучення файлів в будь-який момент часу за допомогою stash з застосуванням або поп. Потім в більш пізньому пункті ви можете очистити свій тайник, використовуючи:

 git stash drop // or clean 
6
22 окт. відповідь дан DevWL 22 Жовтня. 2017-10-22 00:44 '17 в 0:44 2017-10-22 00:44

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

Я розглянув деякі основи тут, в моєму блозі, git-intro-basic-commands

5
16 февр. відповідь дан ysk 16 февр. 2017-02-16 12:05 '17 о 12:05 2017-02-16 12:05

Ми можемо легко видалити локальні неотслежіваемих файли з поточного робочого дерева 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
5

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

01 сент. відповідь дан Mohideen ibn Mohammed 01 сент. 2017-09-01 09:23 '17 о 9:23 2017-09-01 9:23

Звичайна команда 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
11 окт. відповідь дан kujiy 11 Жовтня. 2016-10-11 03:14 '16 о 3:14 2016-10-11 3:14

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

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

 (git clean -d -x -f  git submodule foreach --recursive git clean -d -x -f) 
3
25 сент. відповідь дан Sergey 25 сент. 2017-09-25 19:25 '17 о 19:25 2017-09-25 19:25

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) для створення первинного робочого каталогу для тестування чистої збірки.
3
02 нояб. відповідь дан ZenLulz 02 нояб. 2017-11-02 11:24 '17 о 11:24 2017-11-02 11:24
 git clean -f 

видалить неотслежіваемих файли з поточного git

 git clean -fd 

коли ви хочете видалити каталоги і файли, це призведе до видалення тільки неотслежіваемих каталогів і файлів

1
18 мая '18 в 9:04 2018-05-18 09:04 відповідь дан sudhir Vishwakarma 18 травня '18 о 9:04 2018-05-18 9:04
  • 1
  • 2

Інші питання по мітках або Задайте питання