Zanemari datoteke koje su već prenesene u spremište Git.

Imam već pokrenut Git repozitorij u koji sam dodao .gitignore datoteku. Kako ažurirati indeks datoteke tako da se datoteke koje želim ignorirati ignoriraju?

2224
16 июля '09 в 22:26 2009-07-16 22:26 trobrock je postavljen 16. srpnja u 10:26 sati
ответ 21 odgovor

Da biste pratili jednu datoteku koja je već dodana / inicijalizirana u vaše spremište, tj. Za zaustavljanje praćenja datoteke, ali ne i za njeno uklanjanje, koristite: git rm --cached filename

Da biste raščlanili sve datoteke koje se sada nalaze u vašem .gitignore :

Najprije napravite izmjene koda na čekanju , a zatim pokrenite ovu naredbu:

 git rm -r --cached . 

Time se uklanjaju sve modificirane datoteke iz indeksa (srednje područje), a zatim pokreće:

 git add . 

Popravite:

 git commit -m ".gitignore is now working" 

Da biste otkazali git rm --cached filename , koristite git add filename .

Svakako dovršite sve važne promjene prije pokretanja git add. U suprotnom ćete izgubiti sve promjene u drugim datotekama.

3691
16 июля '09 в 22:32 2009-07-16 22:32 odgovor je dao trobrock 16. srpnja '09 u 10:32 2009-07-16 22:32

Ako pokušate zanemariti promjene u datoteci koja je već praćena u spremištu (na primjer, datoteku dev.properties koju trebate promijeniti za svoje lokalno okruženje, ali nikada ne želite provjeriti ima li tih promjena), ono što želite učiniti je:

 git update-index --assume-unchanged <file> 

Ako želite ponovno početi pratiti promjene

 git update-index --no-assume-unchanged <file> 

Pogledajte stranicu s uputama za git-ažuriranje indeksa (1) .

border=0

Također provjerite no-skip-worktree skip-worktree i no-skip-worktree za indeks ažuriranja, ako je potrebno, da biste spremili prošli git-reset ( putem )


Ažuriranje: Kao što su ljudi pitali, ovdje je prikladan (i ažuriran nakon komentare dolje) alias da biste vidjeli koje datoteke su trenutno "zanemarene" (- bez promjena) u lokalnom radnom području

 $ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]" 
527
06 июля '12 в 20:09 2012-07-06 20:09 odgovor je dyodji 6. srpnja '12 u 20:09 2012-07-06 20:09

Da biste pratili datoteku koja je već dodana / inicijalizirana u vaše spremište, tj. Prestati pratiti datoteku, ali je ne brišite iz sustava: git rm --cached filename

351
15 сент. Odgovor daje pagetribe 15. rujna 2010-09-15 02:55 '10 u 2:55 2010-09-15 02:55

Da - .gitignore sustav zanemaruje datoteke koje trenutno nisu pod kontrolom verzija s git-a.

odnosno Ako ste već dodali datoteku pod nazivom test.txt s git-add , dodavanje test.txt u .gitignore i dalje će dovesti do promjena u test.txt .

Prvo morate git rm test.txt i git rm test.txt tu promjenu. Tek tada će se promjene u test.txt zanemariti.

78
18 июля '09 в 11:15 2009-07-18 11:15 Odgovor je dao Antony Stubbs 18. srpnja '09 u 11:15 sati 2009-07-18 11:15

Uklonite bijeli prostor u .gitignore

Također, provjerite da vaš .gitignore nema pratećih razmaka. Na ovo pitanje sam došao jer sam tražio odgovor, a onda mi je bilo smiješno da otvorim urednik umjesto da samo košem. Uklonjen je dodatni prostor s kraja, a poof sada radi :)

50
02 февр. Odgovor daje MikeJansen 02. veljače. 2012-02-02 18:59 '12 u 18:59 2012-02-02 18:59

dovršio sam sljedeće korake

 git rm -r --cached . git add . git reset HEAD 

zatim git obrišite sve datoteke (* .swp u mom slučaju) koje treba zanemariti.

40
15 июля '11 в 10:22 2011-07-15 10:22 odgovor je dao Orlando 15. srpnja '11 u 10:22 2011-07-15 10:22

Ako želite zaustaviti datoteku praćenja bez brisanja datoteke iz lokalnog sustava, koju radije zanemarim config/database.yml . Samo pokušajte:

 git rm --cached config/database.yml # this will delete your file from git history but not from your local system. 

Dodajte ovu datoteku u datoteku .gitignore i .gitignore promjene. Od sada, sve promjene u config / database.yml neće se pratiti pomoću git-a.

 $ echo config/database.yml >> .gitignore 

Hvala vam

37
02 марта '14 в 12:00 2014-03-02 12:00 odgovor je dat przbadu 02 ožujak '14 u 12:00 2014-03-02 12:00

Da biste izbrisali samo nekoliko određenih datoteka:

 git update-index --assume-unchanged path/to/file 

Ako ga želite ponovno početi pratiti:

 git update-index --no-assume-unchanged path/to/file 
28
21 авг. odgovor od Marka Salvatorea 21. kol. 2013-08-21 17:20 '13 u 17:20 2013-08-21 17:20

Kao što je izvijestio dav_i, spremiti datoteku u repo i još uvijek je ukloniti iz promjena bez stvaranja dodatnog urezivanja, možete koristiti:

 git update-index --assume-unchanged filename 
26
17 апр. Odgovori Iman Mohamadi 17. travnja 2015-04-17 10:21 '15 u 10:21 sati 2015-04-17 10:21

Sveobuhvatni odgovori!

Samo upotrijebite sljedeće.

 git rm -r --cached . 

To će ukloniti datoteke koje pokušavate ignorirati iz izvora, a ne iz čarobnjaka na vašem računalu!

Nakon toga, samo zaključajte i kliknite!

25
19 июля '17 в 8:38 2017-07-19 08:38 odgovor je dao Ahmad Awais 19. srpnja 2006. u 8:38 2017-07-19 08:38

Ne znajući što je "zapovijed za odgovor" učinila, trčala sam, mnogo na razočaranje. Ona rekurzivno briše svaku datoteku iz vašeg git repozitorija.

Spremanje za backup ... Kako vratiti "git rm -r." ?

 git reset HEAD 

Ovo je trik, jer sam otključao lokalne datoteke koje nisam htio prepisati.

24
12 апр. odgovor je averydev 12. travnja 2011-04-12 23:39 '11 u 23:39 2011-04-12 23:39

Postoji još jedan prijedlog, možda za spore momke poput mene =) Stavite .gitignore datoteku u korijen spremišta ne u .git >. Hura!

23
19 июня '13 в 0:08 2013-06-19 00:08 odgovor je dao Olga 19. lipnja '13 u 0:08 2013-06-19 00:08

Nijedan od odgovora nije radio za mene.

Umjesto

  • Izdvojite datoteku iz direktorija s git kontrolom
  • Provjerite uklanjanje git-a
  • Premjestite datoteku natrag u kontrolirani direktorij direktorija

Nakon premještanja datoteke, git će je ignorirati.

Radi s direktorijima!

22
15 нояб. Odgovor daje Hunter S 15.11. 2015-11-15 07:03 '15 u 7:03 2015-11-15 07:03

Još jedan problem s kojim sam se susreo bio je da sam postavio komentare.

 tmp/* # ignore my tmp folder (this doesn't work) 

radi

 # ignore my tmp folder tmp/ 
20
06 дек. Odgovor je dan 06. prosinca. 2011-12-06 16:14 '11 u 16:14 2011-12-06 16:14

Ako su datoteke već u kontroli verzija, morate ih ručno izbrisati.

18
16 июля '09 в 22:28 2009-07-16 22:28 Odgovor daje Aragorn 16. srpnja u 10:28 2009-07-16 22:28

Zahvaljujući vašem odgovoru, uspio sam napisati ovaj mali linijski brod kako bih ga poboljšao. Pokrenuo sam ga na svom .gitignore i repo, i nisam imao nikakvih problema, ali ako netko vidi bilo kakve probleme, komentirajte. To bi trebalo biti git rm -r --cached iz .gitignore :

cat $ (git rev-parse - show-toplevel) / .gitIgnore | sed "s // $ //" | grep -v "^ #" | xargs -L 1 -I {} pronađi $ (git rev-parse - show-toplevel) -name "{}" | xargs -l 1 git rm -r - spremljeno

Imajte na umu da ćete dobiti puno fatal: pathspec '<pathspec>' did not match any files . To je jednostavno za datoteke koje nisu izmijenjene.

13
03 июля '12 в 20:25 2012-07-03 20:25 odgovor je dan umop 03 srpanj '12 u 20:25 2012-07-03 20:25

Našao sam čudan problem s .gitignore. Sve je bilo na mjestu i činilo se ispravnim. Jedini razlog zbog kojeg je moj .gitignore "ignoriran" bio je to što je kraj retka bio u Mac formatu (r). Stoga, nakon spremanja datoteke s ispravnim krajem retka (u vi pomoću: set ff = unix), sve je radilo kao šarm!

10
02 марта '12 в 12:56 2012-03-02 12:56 Odgovor je dao Johannes Vetter na ožujak 02 '12 u 12:56 2012-03-02 12:56

Još jedan problem koji ovdje nije spomenut jest da ste kreirali svoj .gitignore u Windows Notebooku, za koji sam saznao da može izgledati kao brbljanje na drugim platformama. Ključ je osigurati da je kodiranje postavljeno na ANSI u Notepadu (ili stvoriti datoteku na linuxu, baš kao i ja).

Iz mog odgovora ovdje: solopackaging.ru.site/questions/2007 / ...

9
21 мая '13 в 12:43 2013-05-21 12:43 odgovor je dao Matt Parkins 21. svibnja '13 u 12:43 2013-05-21 12:43

Na mom poslužitelju na linux poslužitelju (nije istinito na mom lokalnom dev masteru), direktorije se ignoriraju dok ne dodam zvjezdicu:

WWW / arhiva / *

Ne znam zašto, ali sam izgubio par sati, pa sam htio podijeliti ...

8
09 марта '13 в 9:36 2013-03-09 09:36 odgovor je dat ndemoreau 9. ožujka '13 u 9:36 2013-03-09 09:36

Treba imati na umu da ako .gitignore ne ignorira datoteke bez praćenja, to znači da ne biste trebali imati komentare na istoj liniji kao ignorirati. To je u redu

 # ignore all foo.txt, foo.markdown, foo.dat, etc. foo* 

Ali neće raditi:

 foo* # ignore all foo.txt, foo.markdown, foo.dat, etc. 

.gitignore tumači posljednji slučaj kao "ignoriraj datoteke s imenom "foo* # ignore all foo.txt, foo.markdown, foo.dat, etc." , što, naravno, nemaš.

6
20 февр. Odgovor je dao Gabriel Perdue 20. veljače. 2016-02-20 01:52 '16 u 1:52 2016-02-20 01:52

Ako trebate zaustaviti praćenje mnogih ignoriranih datoteka, možete kombinirati neke naredbe:

git ls-files -i --exclude-standard | xargs -L1 git rm --cached

Time ćete zaustaviti praćenje ignoriranih datoteka. Ako želite izbrisati datoteke iz datotečnog sustava, nemojte koristiti --cached . Također možete odrediti mapu za ograničavanje pretraživanja, na primjer:

git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm

4
20 апр. Odgovor daje Etherealone 20. travnja. 2017-04-20 09:18 '17 u 9:18 2017-04-20 09:18

Ostala pitanja o oznakama ili Ask a Question