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


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


5796
2017-09-14 09:06


походження


Цей інтерактивний чит-лист GIT ndpsoftware.com/git-cheatsheet.html показує робоче середовище git (Google дає кращі результати за допомогою "робочого простору", ніж "робоча копія"). - qneill
Примітка: якщо ви хочете видалити лише дещо не відстежуваних файлів, але не всі вони, git clean зараз має інтерактивний режим! Побачити моя відповідь на це інше питання: git 1.8.4+ - VonC
Зауважте, що ви не видаляєте файли з гітарної гілки, оскільки філією є посилання на фікс, і тому не містить невідслідуваних файлів. Вони присутні лише у робочому каталозі і не мають нічого спільного з філіями. Це, мабуть, лише роз'яснення термінології. - Pavel Šimerda
Перш ніж публікувати нову відповідь, вважають, що для цього питання вже 25+ відповідей. Переконайтеся, що ваша відповідь сприяє тому, що не є серед наявних відповідей - Sazzad Hissain Khan
Щоб прояснити розуміння непосвячених і нових для Git стану git статусу, і якщо він показує файл як не відстежений, і ви не хочете, щоб цей файл в repo, ви можете просто перейти до вашої файлової системи і видалити або перемістити його . Це не зробить нічого поганого для вашого місцевого репо або для Git. Ви також можете використовувати git clean або деякі варіанти відповідей нижче, включаючи інтерактивну версію, щоб видалити лише вибіркові файли, але інтерактивний режим може бути нудним. Що б ви не робили, переконайтеся, що ви розумієте, що git clean буде видалено чи використано --dry-run щоб він сказав вам, не видаливши нічого. - LightCC


Відповіді:


Відповідно до документації Git чистий git

Вилучіть відстежені файли з робочого дерева


Крок 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 Документи для отримання додаткової інформації.

Параметри

- сила

Якщо змінна налаштування git clean.requireForce не встановлена ​​на false, git clean відмовиться запускати, якщо не вказано -f, -n або -i.

-x

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

-X

Видалити тільки файли, проігноровані Git. Це може бути корисним для перебудови все з нуля, але зберігати вручну створені файли.

-n

--пробіг

Нічого не видаляйте, просто покажіть, що буде зроблено.

-d

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


7613
2018-05-26 20:59



git clean -f працює тільки в каталозі, де він називається (і підкаталоги). Якщо ви хочете очистити всю робочу копію, ви повинні називати його в його кореневому каталозі. - Eduardo Bezerra
Він також видаляє всі файли всередині .gitignore. Мені потрібно видалити лише ті файли / папки, які є новими, а не в .gitignore - Kostanos
@Kostanos Якщо ви не хочете видаляти файли, які містяться в .gitignore, то не надайте прапор -x. - Lo-Tan
git clean -f :/ працює так, ніби ви запустили його в кореневому режимі repo. Див. Також більш пізні відповіді, що враховують також підмодулі git clean -ffxd :/ - here
@ Michelle git clean -xfd ВИНИКНУВАЛИ ВСІ ФАЙЛИ, ЩО МОЖУТЬ СКЛАДИТИ ВАШІ .Гітігнор і вони не підлягають відшкодуванню - thedanotto


Використовуйте git clean -f -d щоб це було впевнено каталоги також видаляються.

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


817
2017-12-30 20:12



Як було сказано раніше, добре просушити це git clean -n -d - Ms01
Те саме робити git clean -nd і git clean -fd. - Micer


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

git clean -i

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

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

git iclean

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


397
2017-09-14 09:09



got: помилка: невідомий перемикач `i ' - pal4life
@ pal4life Він був доданий в 1.8.4, може бути, ви використовуєте стару версію git? github.com/git/git/blob/master/Documentation/RelNotes/1.8.4.txt - Mattias Backman
@SystematicFrank, Не використовуйте псевдонім, вони насправді не масштабуються за межі однієї людини .... - Pacerier


git-clean - Вилучити непідозлірені файли з робочого дерева


387
2018-01-25 12:24





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

git clean -d -f -f


200
2018-06-03 12:16



До речі, це написано документація : Git відмовиться видаляти каталоги з підкатегорією .git або файлом, якщо не вказано другий -f. Але спасибі в будь-якому випадку! - Maxim Suslov


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

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

git add --all
git reset --hard HEAD


145
2018-01-11 00:41



Ви можете замінити git add --all по git add .. Таким чином, ви можете зробити це коротше в онлайн-режимі git add . && git reset --hard HEAD  (бути дужеобережно з цією командою). - RousseauAlexandre
Навіщо це використовувати? git clean? - user2864740
Оскільки git clean мабуть, також видаляє все, що ігнорується. Він просто видалив мій node_modules папка Це робитиме перший етап для всіх файлів, крім ігнорованих, а потім видалити їх, виконавши скидання. Ігноровані файли не будуть зачеплені. - Andreas
@Andreas він не видаляє ігноровані файли для мене (git 2.14.1). Ви повинні бігти git clean -n в будь-якому випадку, перш ніж робити справжнє видалення (або використовувати git clean -i) - Qw3ry
git clean видаляє ігноровані файли, лише якщо ви використовуєте або -x або -X опція, інакше він просто видаляє файли, які не були відстежені. - doubleDown


мені подобається git stash save -u тому що ви можете відмовитися від них усіх git stash pop.

РЕДАГУВАТИ: також знайшов спосіб показати невідслідуваний файл у стилі (наприклад, git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986


118
2017-11-25 14:16



Чи можете ви пояснити -u на прилавку? Я не слідкую, як це працює інакше, ніж зберегти git stash. Я спробував це, і це спрацювало. Подивіться на документи git і не знайшли його там. - Winnemucca
-u еквівалентно --include-untracked. Ви можете знайти допомогу з git help stash. - hiroshi
@hiroshi спасибо! після того, як намагався кожен шматочок рішення від десятка різних людей, це той, який, нарешті, працював ... whew! Навіть прибиральна штучка зробила Нада. Збереження - ти піклувався про невідбиток. скинути жорсткий / чистий силу / тощо ніхто з них нічого не зробив для мене. - killjoy