Kako izbrisati lokalne (neprovedene) datoteke iz trenutnog radnog stabla Git?

Kako ukloniti nepotrebne lokalne datoteke s trenutnog radnog stabla?

6113
14 сент. Samo za čitanje postavljeno 14. rujna. 2008-09-14 12:06 '08 u 12:06 pm 2008-09-14 12:06
@ 36 odgovora
  • 1
  • 2

Prema Git čistoj dokumentaciji

Izbrišite nepotrebne datoteke s radnog stabla


Korak 1 - pokažite što će biti uklonjeno s parametrom -n :

 git clean -n 

Očisti korak - Pazite: ovo će izbrisati datoteke :

 git clean -f 
  • Za uklanjanje direktorija pokrenite git clean -f -d ili git clean -fd
  • Da biste uklonili ignorirane datoteke, pokrenite git clean -f -X ili git clean -fX
  • Da biste uklonili zanemarene, a ne ignorirane datoteke, pokrenite git clean -f -X ili git clean -fX

Zabilježite razliku u događajima na X za posljednje dvije momčadi.

Ako je clean.requireForce postavljen na "true" (zadano) u vašoj konfiguraciji, morate navesti -f , inače se ništa neće dogoditi.

Ponovno pogledajte dokumentaciju git-clean za više informacija.

funkcije

f

- snagu

Ako Git clean.requireForce konfiguracijska varijabla nije postavljena na false, Git clean će odbiti pokretanje osim ako nije naveden -f, -n ili -i.

-x

Nemojte koristiti standardna pravila ignoriranja koja se čitaju iz .gitignore (za svaki direktorij) i $ GIT_DIR / info / exclude, ali još uvijek koristite pravila ignoriranja navedena s opcijama -e. To vam omogućuje brisanje svih neobrađenih datoteka, uključujući i sastavljanje proizvoda. To se može koristiti (možda u sprezi s Git reset) kako bi se stvorio neoštećen radni direktorij za provjeru čiste gradnje.

-X

Izbrišite samo datoteke koje Git zanemaruje. To može biti korisno za obnavljanje svega, ali spremanje ručno izrađenih datoteka.

-n

- suha

Zapravo, ne brišite ništa, samo pokažite što će biti učinjeno.

-D

Izbrišite nepotrebne direktorije pored sirovih datoteka. Ako nepotpisanim direktorijem upravlja drugi Git repozitorij, on se ne briše prema zadanim postavkama. Koristite -f dvaput ako zaista želite ukloniti takav direktorij.

7973
15 сент. Odgovor dao Andreas Ericsson 15. rujna 2008-09-15 20:32 '08 u 20:32 2008-09-15 20:32

Upotrijebite git clean -f -d kako biste osigurali brisanje direktorija .

border=0

Tada možete provjeriti jesu li vaše datoteke stvarno prošle git status .

866
26 мая '09 в 23:59 2009-05-26 23:59 odgovor je dao robert.berger 26. svibnja u 23:59 2009-05-26 23:59

Iznenađen sam da to nitko prije nije spomenuo:

 git clean -i 

To znači interaktivnost i dobivate kratak pregled onoga što će biti uklonjeno, nudeći vam opciju uključivanja / isključivanja zahvaćenih datoteka. Općenito, još uvijek je brže od pokretanja obaveznog - --dry-run prije stvarnog čišćenja.

Morat ćete baciti in -d ako želite i voditi brigu o praznim mapama. Na kraju, on pravi dobar pseudonim:

 git iclean 

Dakle, dodatna ručna implementacija interaktivnih naredbi može se umoriti za napredne korisnike. Ovih dana koristim već spomenuti git clean -fd

427
30 дек. Odgovor daje SystematicFrank 30. prosinca. 2013-12-30 23:12 '14 u 11:12 2013-12-30 23:12
388
14 сент. Odgovor daje Fire Lancer na 14 sep. 2008-09-14 12:09 '08 u 12:09 2008-09-14 12:09

Ako je untracked-directory vaš vlastiti git repozitorij (na primjer, podmodul), morate dvaput koristiti -f :

git clean -d -f -f

213
25 янв. Odgovor koji je dao Michał Szajbe 25. siječnja 2013-01-25 15:24 '13 u 15:24 2013-01-25 15:24

Jednostavan način za brisanje datoteka bez zapisa

Da biste izbrisali sve datoteke bez zapisa, najjednostavnije je prvo ih sve dodati i resetirati spremište, kao što je prikazano u nastavku.

 git add --all git reset --hard HEAD 

156
03 июня '16 в 15:16 2016-06-03 15:16 Odgovor daje Thanga 03. lipnja 2006. u 15:16 2016-06-03 15:16

Volim git stash push -u jer ih sve možete otkazati git stash pop .

EDIT: Također sam pronašao način prikazivanja datoteke koja se ne može pratiti u predmemoriji (na primjer, git show stash@{0}^3 ) solopackaging.ru.site/questions/507 / ...

EDIT2: git stash save je zastarjelo u korist push . Hvala @ skripta vuk.

121
11 янв. Hiroshi je odgovorio 11. siječnja 2014-01-11 03:41 '14 u 3:41 2014-01-11 03:41

To uvijek koristim:

 git clean -fdx 

Za vrlo veliki projekt možete ga pokrenuti nekoliko puta.

98
25 нояб. odgovor je dao Oscar Fraxedas 25. studenog. 2013-11-25 17:16 '13 u 17:16 2013-11-25 17:16

git-clean je ono što tražite. Koristi se za uklanjanje neobrađenih datoteka s radnog stabla.

83
14 сент. Odgovor se daje Espo 14. rujna. 2008-09-14 12:08 '08 u 12:08 2008-09-14 12:08

Ako želite ukloniti nepotpisane datoteke iz određenog poddirektorija,

 git clean -f {dir_path} 

I kombinirani način za uklanjanje ne reproducibilnih datoteka / datoteka i ignoriranih datoteka.

 git clean -fxd {dir_path} 

nakon toga izmijenit ćete samo datoteke u git status .

73
24 сент. Odgovor je dat Vijay C 24 sep. 2013-09-24 09:28 '13 u 9:28 2013-09-24 09:28

git clean -fd briše direktorij

git clean -fX uklanja ignorirane datoteke

git clean -fX uklanja zanemarene i ne ignorirane datoteke

Možete koristiti sve gore navedene opcije u kombinaciji kao

git clean -fdXx

Pogledajte dodatak za pomoć.

48
22 янв. Odgovor je dat Pooja Jan 22 2015-01-22 09:33 '15 u 9:33 2015-01-22 09:33

Izbrišite sve nepotrebne mape i datoteke u ovom repo + pod-modulu

To vas dovodi u isto stanje kao i svježi klon.

 git clean -ffdx 

Izbrišite sve dodatne mape i datoteke u ovom repu, ali ne i njihove podmodule.

 git clean -fdx 

Izbrišite samo dodatne mape, ali ne i datoteke (na primjer, mapu za izgradnju)

 git clean -fd 

Izbrišite nepotrebne mape + nedostajuće datoteke (ali ne i nove datoteke)

Ako datoteka nije ignorirana i još nije registrirana, ostaje. Zabilježite kapital X.

 git clean -fdX 

Novi interaktivni način rada

 git clean 
37
12 февр. Odgovor daje Shital Shah 12. veljače. 2017-02-12 11:33 '17 u 11:33 2017-02-12 11:33

U redu, jednostavno je ukloniti nepotrebne datoteke i mape bez zapisa , a pomoću naredbe git na naredbenom retku učinite to na sljedeći način:

 git clean -fd 

Provjerite prije nego što to učinite, jer će izbrisati datoteke i mape bez izrade povijesti ...

Također u ovom slučaju -f označava snagu, a -d označava direktorij ...

Dakle, ako želite izbrisati samo datoteke, možete koristiti samo -f :

 git clean -f 

Ako želite izbrisati (direktorije) i datoteke, možete izbrisati samo ne-nadzirane direktorije i datoteke, na primjer:

 git clean -fd 

Također možete koristiti zastavicu -x za uključivanje datoteka koje zanemaruje git. To bi bilo korisno ako želite izbrisati sve.

Dodavanje -i zastavice uzrokuje da git zatraži dopuštenje za brisanje datoteka jednu po jednu u pokretu.

Ako niste sigurni i želite prvo provjeriti sve, dodajte oznaku -n .

Koristite -q ako ne želite vidjeti izvješće nakon uspješnog brisanja.

Također sam stvoriti sliku ispod da bi ga više pamtljiva, pogotovo sam vidio koliko ljudi zbuniti -f s čišćenje mapu ili nekako ga zbuniti!


2019

Najbolje se koristi: čist

 git clean -d -x -f 

Time se uklanjaju nepotrebne datoteke, uključujući direktorije (-d) i datoteke koje git (-x) zanemaruje.

Također zamijenite -f argument s -n da biste izvršili interaktivni način rada na dry-run ili -i i reći će vam što će biti uklonjeno.

32
16 апр. Odgovor je dat Chhabilal 16 apr. 2015-04-16 09:49 '15 u 9:49 2015-04-16 09:49

Interaktivni pristup korisnika:

 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 za interaktivne
-f za snagu
-d za direktorij
-x za ignorirane datoteke (dodajte ako je potrebno)

Napomena: Dodajte -n ili - suho da biste samo provjerili što će učiniti.

20
02 марта '17 в 23:09 2017-03-02 23:09 odgovor je dan bit_cracker007 2. ožujka u 23:09 2017-03-02 23:09

Za mene, samo nakon posla:

 git clean -ffdx 

U svim drugim slučajevima primio sam poruku "Preskakanje imenika" za neke poddirektorije.

15
16 авг. odgovor je dan rahul286 16 aug. 2016-08-16 18:29 '16 u 18:29 2016-08-16 18:29

git clean -f -d -x $(git rev-parse --show-cdup) koristi se isključivo za korijenski direktorij, bez obzira gdje ga zovete u stablu direktorija spremišta. Koristim ga cijelo vrijeme, jer vas ne prisiljava da napustite mapu u kojoj trenutno radite, i omogućuje vam da izbrišete i popravite desno od mjesta na kojem se nalazite.

Provjerite odgovaraju li zastavice -f , -d , -x vašim potrebama:

 -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. 

Postoje i druge zastavice, samo odaberite git clean --help .

15
02 дек. Odgovor daje Nikita Leonov 02. prosinca 2015-12-02 20:57 '15 u 20:57 2015-12-02 20:57

Ako samo želite izbrisati datoteke koje su označene kao neprovjerene "status git"

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

Radije bih ovo "git clean", jer "git clean" će ukloniti datoteke ignorirane od strane git-a, tako da će vaš sljedeći build morati sve obnoviti, a možete i izgubiti IDE postavke.

13
02 марта '16 в 5:09 2016-03-02 05:09 odgovor je dan jazzdev 02 ožujak '16 u 5:09 2016-03-02 05:09

Održivost za takvu situaciju koju sam izmislio i pokušao (što odlično funkcionira):

 git add . git reset --hard HEAD 
Oprez! Svakako prije kopiranja kopirajte sve potrebne promjene (čak i na neiskrene datoteke).
13
21 февр. odgovor se daje tibi 21 Feb. 2016-02-21 20:29 '16 u 20:29 2016-02-21 20:29

Da biste saznali što će biti izbrisano prije stvarnog uklanjanja:

git clean -d -n

Izlazit će nešto poput:

Uklanja uzorak.txt

Za uklanjanje svega navedenog u izlazu prethodne naredbe:

git clean -d -f

Izlazit će nešto poput:

Deinstalirajte sample.txt

10
16 февр. Odgovor je dao Omar Mowafi 16. veljače. 2016-02-16 11:42 '16 u 11:42 2016-02-16 11:42

Da biste izbrisali neiskorištene datoteke, najprije morate upotrijebiti naredbu da biste vidjeli datoteke na koje će čišćenje utjecati.

 git clean -fdn 

Prikazat će vam se popis datoteka koje želite izbrisati. Sada, da biste zapravo izbrisali te datoteke, upotrijebite sljedeću naredbu:

 git clean -fd 
8
25 окт. odgovor koji je dao Gaurav 25. listopada. 2016-10-25 12:09 '16 u 12:09 2016-10-25 12:09

Netko bi trebao spomenuti:

 git clean [<options>] 

Jesam li u pravu

7
27 авг. odgovor dao joeytwiddle 27. kolovoza. 2015-08-27 13:18 '15 u 13:18 2015-08-27 13:18

Budite oprezni kada pokrenete naredbu `git clean`.

Uvijek koristite -n prije pokretanja stvarne naredbe, prikazujući koje će datoteke biti izbrisane.

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

Po zadanom, git clean će izbrisati samo neiskorištene datoteke koje se ne ignoriraju. Svaka datoteka koja odgovara uzorku u .gitignore ili drugim zanemarivim datotekama neće biti izbrisana. Ako također želite izbrisati te datoteke, možete dodati naredbu -x naredbi clean.

 git clean -f -d -x 

Tu je i -i interaktivni način s čistom naredbom.

 git clean -x -i 

Alternativno,

Ako niste 100% sigurni da je brisanje nedovršenog posla sigurno, umjesto toga možete koristiti sakrivanje.

 git stash --all 

Također će obrisati vaš direktorij, ali će vam dati fleksibilnost da u bilo kojem trenutku izvučete datoteke pomoću stasha s programom application ili pop . Zatim kasnije možete izbrisati predmemoriju pomoću:

 git stash drop // or clean 
6
22 окт. Odgovor DevWL 22. listopada. 2017-10-22 00:44 '17 u 0:44 2017-10-22 00:44

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

Ovdje sam opisao neke osnove na svom blogu, git-intro-basic-command

5
16 февр. odgovor je dan ysk 16 feb . 2017-02-16 12:05 '17 u 12:05 2017-02-16 12:05

Lako možemo ukloniti lokalne datoteke bez zapisa s trenutnog git radnog stabla koristeći git komentare ispod.

 git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>] 

primjer:

 git reset --hard HEAD 

reference:

  1. https://git-scm.com/docs/git-reset
  2. Kako se koristi 'git reset --hard HEAD' za povratak na prethodnu predaju?
  3. Resetirajte lokalnu granu repozitorija tako da izgleda kao udaljeno spremište HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
5

ued Naredba Izbriši sirove datoteke iz git docs git clean

git clean - uklonite slomljene datoteke s radnog stabla

Predloženi način: Način interakcije s git clean -i tako da ga možemo kontrolirati. pogledajte preostale dostupne opcije.

Dostupne opcije:

 git clean -d -f -i -n -q -e -x -X (can use either) 

objašnjenje:

1. -d

Izbrišite nepotrebne direktorije pored sirovih datoteka. Ako nepotpisanim direktorijem upravlja drugi git repozitorij, on se ne briše prema zadanim postavkama. Koristite -f dvaput ako zaista želite ukloniti takav direktorij.

2. -f, - snaga

Ako konfiguracijska varijabla git clean.requireForce nije postavljena na false, git clean će odbiti pokretanje osim ako nije navedena -f, -n ili -i.

3. -i, - interaktivno

Pokažite što će biti učinjeno i očistite datoteke na internetu. Za detalje pogledajte "Interaktivni način".

4. -n, - suho

Zapravo, ne brišite ništa, samo pokažite što će biti učinjeno.

5. -q, - tiha

Budite mirni, samo prijavite pogreške, ali ne brišite datoteke.

6. -e, - isključi =

Osim onih koji se nalaze u .gitignore (za svaki direktorij) i $ GIT_DIR / info / exclude, također razmotrite ove obrasce u skupu važećih pravila ignoriranja.

7. -x

Nemojte koristiti standardna pravila ignoriranja koja se čitaju iz .gitignore (za svaki direktorij) i $ GIT_DIR / info / exclude, ali još uvijek koristite pravila ignoriranja navedena s opcijama -e. To vam omogućuje brisanje svih neobrađenih datoteka, uključujući i sastavljanje proizvoda. To se može koristiti (možda u sprezi s git reset) da biste stvorili netaknuti radni direktorij za provjeru čiste gradnje.

8. -X

Izbrišite samo datoteke koje Git zanemaruje. To može biti korisno za obnavljanje svega, ali spremanje ručno izrađenih datoteka.

01 сент. Odgovor dao Mohideen ibn Mohammed na Sep 01 2017-09-01 09:23 '17 u 9:23 am 2017-09-01 09:23

Uobičajena naredba git clean ne uklanja neiskorištene datoteke s 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 окт. odgovor je dat kujiy 11 okt. 2016-10-11 03:14 '16 u 3:14 2016-10-11 03:14

Očistite git repozitorij i sve podmodule rekurzivno

Sljedeća naredba rekurzivno briše trenutni git repozitorij i sve njegove podmodule:

 (git clean -d -x -f  git submodule foreach --recursive git clean -d -x -f) 
3
25 сент. odgovor je dat Sergey 25 sep. 2017-09-25 19:25 '17 u 19:25 2017-09-25 19:25

oh-my-zsh sa zsh pruža izvrsne aliase preko git plugina. Također se mogu koristiti u bash.

gclean='git clean -fd'
gpristine='git reset --hard git clean -dfx'

  • gclean uklanja imenike koji se ne mogu pratiti i datoteke koje nisu označene.
  • gpristine hard- gpristine lokalne promjene, uklanja netretirane direktorije, datoteke bez zapisa, i ne koristi standardna pravila ignoriranja pročitana iz .gitignore (za svaki direktorij) i $ GIT_DIR / info / exclude, ali još uvijek koristi pravila ignoriranja postavljena s opcijom -e. To vam omogućuje brisanje svih datoteka bez zapisa, uključujući i proizvode za izgradnju. To se može koristiti (eventualno u kombinaciji s git reset) za stvaranje primarnog radnog imenika za testiranje čiste gradnje.
3
02 нояб. Odgovor se daje ZenLulz 02 Nov. 2017-11-02 11:24 '17 u 11:24 2017-11-02 11:24
 git clean -f 

će ukloniti netakirane datoteke s trenutnog git-a

 git clean -fd 

kada želite izbrisati direktorije i datoteke, izbrisat će se samo neoznačeni direktoriji i datoteke.

1
18 мая '18 в 9:04 2018-05-18 09:04 odgovor je dao sudhir Vishwakarma 18. svibnja u 9:04 2018-05-18 09:04
  • 1
  • 2

Ostala pitanja o ili postavljanju pitanja