Как да изтриете локални (не-проследявани) файлове от текущото работно дърво Git?

Как да премахнете ненужните локални файлове от текущото работно дърво?

6113
14 сент. Задаване само за 14 септември. 2008-09-14 12:06 '08 в 12:06 ч. 2008-09-14 12:06
@ 36 отговора
  • 1
  • 2

Според 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 отново за повече информация.

функции

-f

- сила

Ако конфигурационната променлива Git clean.requireForce не е зададена на false, Git clean ще откаже да стартира, освен ако не е зададена -f, -n или -i.

-x

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

-X

Изтриване само на файлове, игнорирани от Git. Това може да е полезно за възстановяване на всичко от нулата, но и за съхраняване на ръчно създадени файлове.

- суха

Всъщност, не изтривайте нищо, просто покажете какво ще бъде направено.

-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 май 2009 г. в 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 в 11: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-directory е ваш собствен 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.06.16 в 15:16 2016-06-03 15:16

Харесва ми git stash push -u защото можете да ги откажете с git stash pop .

РЕДАКТИРАНЕ: Намерих и начин за показване на непроследим файл в кеша (например git show stash@{0}^3 ) medican.info.site/questions/507 / ...

EDIT2: git stash save се отхвърля в полза на push . Благодарение @ скрипт вълк.

121
11 янв. Хироши отговори на 11 януари 2014-01-11 03:41 '14 в 3:41 2014-01-11 03:41

Това винаги използвам:

 git clean -fdx 

За много голям проект можете да го стартирате няколко пъти.

98
25 нояб. отговорът е даден от Оскар Фраксед на 25 ноември. 2013-11-25 17:16 '13 в 17:16 2013-11-25 17:16

git-clean е това, което търсите. Използва се за премахване на необработени файлове от работното дърво.

83
14 сент. Отговорът е даден Espo 14 Sep. 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 sep. 2013-09-24 09:28 '13 в 9:28 2013-09-24 09:28

git clean -fd изтрива директорията

git clean -fX премахва игнорираните файлове

git clean -fX премахва игнорирани и не игнорирани файлове

Можете да използвате всички горепосочени опции в комбинация като

git clean -fdXx

Вижте ръководството на git за повече помощ.

48
22 янв. Отговорът е даден Pooja Jan 22 2015-01-22 09:33 '15 в 9:33 2015-01-22 09: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 09: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 

Във всички други случаи получих съобщението "Пропускане на указател" за някои поддиректории.

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. 

Има и други флагове, просто изберете git clean --help .

15
02 дек. Отговор е даден от Никита Леонов 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 05:09

Жизнеспособност за такава ситуация, която просто измислих и изпробвах (което работи чудесно):

 git add . git reset --hard HEAD 
Внимание! Не забравяйте да копирате всички необходими промени (дори и към неискрени файлове), преди да направите това .
13
21 февр. отговорът е даден на thybzi 21 Feb. 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 февр. Отговорът е даден от Омар Мовафи на 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 в 1: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% сигурни, че изтриването на незавършената ви работа е безопасно, вместо това можете да използвате скривалище.

 git stash --all 

Той също така ще изчисти директорията ви, но ще ви даде гъвкавостта да извличате файлове по всяко време, използвайки скривалище с application или pop . След това на по-късен етап можете да изчистите кеша си чрез:

 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 feb . 2017-02-16 12:05 '17 в 12:05 2017-02-16 12:05

Лесно можем да премахнем локални неотбелязани файлове от текущото работно дърво 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
04 дек. Отговорът е даден от Елангован 04 декември. 2017-12-04 09:30 '17 в 9:30 часа 2017-12-04 09:30

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, - сила

Ако конфигурационната променлива git clean.requireForce не е зададена на false, git clean ще откаже да започне, освен ако не е посочена -f, -n или -i.

3. -i, - интерактивен

Покажете какво ще се направи и изчистете файловете онлайн. За подробности вижте "Интерактивен режим".

4. -n, - сухота

Всъщност, не изтривайте нищо, просто покажете какво ще бъде направено.

5. -q, - тихо

Бъдете спокойни, просто съобщавайте за грешки, но не изтривайте файлове.

6. -e, - изключване =

В допълнение към тези, които се намират в .gitignore (за всяка директория) и $ GIT_DIR / info / exclude, също вземат под внимание тези модели в набора от валидни правила за игнориране.

7. -x

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

8. -X

Изтриване само на файлове, игнорирани от Git. Това може да е полезно за възстановяване на всичко от нулата, но и за съхраняване на ръчно създадени файлове.

5
01 сент. Отговор, даден от Mohideen ibn Mohammed на 01 септември 2017-09-01 09:23 '17 в 9:23 часа 2017-09-01 09: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 oct. 2016-10-11 03:14 '16 в 3:14 2016-10-11 03:14

Изчистете git хранилището и всички подмодули рекурсивно

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

 (git clean -d -x -f  git submodule foreach --recursive git clean -d -x -f) 
3
25 сент. отговорът е даден Сергей 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 Nov. 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:04 в 9:04 2018-05-18 09:04
  • 1
  • 2

Други въпроси за или Задайте въпрос