Як видалити локальні (не відслідковуються) файли з поточного робочого дерева Git?
Як видалити непотрібні локальні файли з поточного робочого дерева?
- 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 двічі, якщо ви дійсно хочете видалити такий каталог.
Використовуйте git clean -f -d
, щоб переконатися, що каталоги також вилучені.

Потім ви можете перевірити, чи дійсно ваші файли пройшли за допомогою git status
.
Я здивований, що ніхто не згадував про це раніше:
git clean -i
Це означає інтерактивність, і ви отримаєте короткий огляд того, що буде видалено, пропонуючи вам можливість включити / виключити порушені файли. В цілому, все ще швидше, ніж запуск обов'язкового --dry-run
до реальної очищення.
Вам потрібно буде кинути в -d
, якщо ви також захочете подбати про порожні папках. В кінці він робить хороший псевдонім:
git iclean
Таким чином, додаткове ручне проведення інтерактивних команд може стомитися для досвідчених користувачів. У ці дні я просто використовую вже згаданий git clean -fd
Якщо untracked-каталог являє собою власний сховище 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
) medican.site.site/questions/507 / ...
EDIT2: git stash save
застаріло на користь push
. Спасибі @ script-вовк.
Це те, що я завжди використовую:
git clean -fdx
Для дуже великого проекту ви можете запустити його кілька разів.
Якщо необхідно видалити непідписані файли з певного підкаталогу,
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
Видаліть зайві папки + пропущені файли (але не нові файли)
Якщо файл не був проігнорований і ще не зареєстрований, він залишається. Зверніть увагу на заголовну X.
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
з очищенням папки або якось плутають!
Найкраще використовувати: git clean
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
-i для інтерактивних
-f для сили
-d для каталогу
-x для ігнорованих файлів (додайте, якщо потрібно)
Примітка: Додати -n або - сухим, щоб просто перевірити, що він буде робити.
Для мене тільки після роботи:
git clean -ffdx
У всіх інших випадках я отримував повідомлення "Skipping Directory" для деяких підкаталогів.
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
.
Якщо ви просто хочете видалити файли, перераховані як неперевірені 'git status'
git stash save -u git stash drop "stash@{0}"
Я вважаю за краще це "git clean", тому що "git clean" видалить файли ігнорується git, тому вашої наступної збірці доведеться перебудувати все і ви також можете втратити налаштування IDE.
Життєздатність для такої ситуації я тільки що придумав і спробував (що прекрасно працює):
git add . git reset --hard HEAD
Обережно! Обов'язково скопіювати будь-які необхідні зміни (навіть в нещирості файли) перед виконанням цього. Щоб дізнатися, що буде видалено до фактичного видалення:
git clean -d -n
Він виведе щось на кшталт:
видалить sample.txt
Щоб видалити всі, перераховані у висновку попередньої команди:
git clean -d -f
Він виведе щось на кшталт:
видалення sample.txt
Щоб видалити невикористовувані файли, ви повинні спочатку використовувати команду для перегляду файлів, на які впливатиме очищення
git clean -fdn
Це покаже вам список файлів, які будуть видалені. Тепер, щоб фактично видалити ці файли, використовуйте наступну команду:
git clean -fd
Хтось повинен дійсно згадати:
git clean [<options>]
Я правий?
Будьте обережні при виконанні команди `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
git clean -f to remove untracked files from working directory.
Я розглянув деякі основи тут, в моєму блозі, git-intro-basic-commands
Ми можемо легко видалити локальні неотслежіваемих файли з поточного робочого дерева git, використовуючи наведені нижче коментарі git.
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
приклад:
git reset --hard HEAD
посилання:
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. Це може бути корисно для відновлення всього з нуля, але зберегти вручну створені файли.
Звичайна команда 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-репозиторій і все підмодулі рекурсивно
Наступна команда рекурсивно очистить поточний репозиторій git і все його підмодулі:
(git clean -d -x -f git submodule foreach --recursive git clean -d -x -f)
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) для створення первинного робочого каталогу для тестування чистої збірки.
git clean -f
видалить неотслежіваемих файли з поточного git
git clean -fd
коли ви хочете видалити каталоги і файли, це призведе до видалення тільки неотслежіваемих каталогів і файлів
- 1
- 2
Інші питання по мітках git git-branch branch або Задайте питання