Ignoruokite failus, kurie jau buvo perkelti į „Git“ saugyklą.

Turiu jau inicijuotą „Git“ saugyklą, kurioje pridėjau .gitignore failą. Kaip atnaujinti failų indeksą taip, kad būtų ignoruojami failai, kuriuos noriu ignoruoti?

2224
16 июля '09 в 22:26 2009-07-16 22:26 „Trobrock“ yra nustatytas liepos 16 d ., 09:26 val. 2009-07-16 22:26
ответ 21 atsakymas

Norėdami stebėti vieną failą, kuris jau buvo pridėtas / inicijuotas jūsų saugykloje, t.y. Jei norite sustabdyti failo stebėjimą, bet ne pašalinti ją iš savo sistemos, naudokite: git rm --cached filename

Jei norite išanalizuoti visus failus, kurie yra dabar .gitignore :

Pirmiausia atlikite laukiančius kodo pakeitimus ir paleiskite šią komandą:

 git rm -r --cached . 

Tai pašalina visus pakeistus failus iš indekso (tarpinė sritis) ir paleidžia:

 git add . 

Ištaisykite:

 git commit -m ".gitignore is now working" 

Jei norite atšaukti git rm --cached filename , naudokite git add filename .

Būtinai git add. visus svarbius pakeitimus prieš paleisdami „ git add. Priešingu atveju neteksite kitų failų pakeitimų.

3691
16 июля '09 в 22:32 2009-07-16 22:32 atsakymą pateikė trobrock liepos 16 d. , 09:32, 2009-07-16 22:32

Jei bandote ignoruoti pakeitimus faile, kuris jau yra stebimas saugykloje (pvz., Failas dev.properties, kurį reikia pakeisti vietinei aplinkai, bet jūs niekada nenorite patikrinti šių pakeitimų), nei norite daryti:

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

Jei norite vėl pradėti stebėti pakeitimus

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

Žr. Git-atnaujinimo indekso (1) vadovą .

border=0

Taip pat patikrinkite atnaujinimo indekso skip-worktree ir no-skip-worktree , jei reikia, kad išsaugotumėte ankstesnį git-reset ( via )


Atnaujinimas: kaip paprašė žmonės, čia yra patogus (ir atnaujintas po komentarų žemiau) pseudonimas, kad pamatytumėte, kurie failai šiuo metu „ignoruojami“ (- be pakeitimų) vietos darbo srityje

 $ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]" 
527
06 июля '12 в 20:09 2012-07-06 20:09 atsakymas pateikiamas dyodji liepos 06 d. 12 val. 20:09 2012-07-06 20:09

Jei norite sekti failą, kuris jau buvo pridėtas / inicijuotas jūsų saugykloje, ty sustabdyti failo stebėjimą, bet neištrinti iš savo sistemos: git rm --cached filename

351
15 сент. Atsakymą pateikė pagetribe 15 rugsėjis 2010-09-15 02:55 '10, 2:55, 2010-09-15 02:55

Taip - .gitignore sistema ignoruoja failus, kurie šiuo metu nėra .gitignore nuo „git“.

t.y. Jei jau pridėjote failą, pavadintą test.txt su git-add , tada pridedant test.txt į .gitignore vis tiek bus stebimi test.txt pakeitimai.

Pirmiausia reikia atlikti git rm test.txt ir atlikti šį pakeitimą. Tik tada bus ignoruojami test.txt pakeitimai.

78
18 июля '09 в 11:15 2009-07-18 11:15 Atsakymą duoda Antony Stubbs liepos 18 d., 09:15, 2009-07-18 11:15

Pašalinkite baltą erdvę .gitignore

Be to, įsitikinkite, kad jūsų .gitignore neturi tarpų. Šį klausimą aš turėjau, nes ieškojau atsakymo, tada man buvo smagu, kad turėčiau atidaryti redaktorių, o ne tik .gitignore. Pašalinta papildoma erdvė nuo galo, o dabar veikia :)

50
02 февр. Atsakymą pateikė MikeJansen 02 vasaris. 2012-02-02 18:59 '12, 18:59, 2012-02-02 18:59

baigiau šiuos veiksmus

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

tada git ištrinti visus failus (* .swp mano atveju), kurie turėtų būti ignoruojami.

40
15 июля '11 в 10:22 2011-07-15 10:22 atsakymą pateikė Orlando liepos 15 d., 11 d., 10:22, 2011-07-15 10:22

Jei norite sustabdyti stebėjimo failą neištrindami failo iš vietinės sistemos, kurią norėčiau ignoruoti config/database.yml . Tiesiog pabandykite:

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

Įtraukite šį failą į .gitignore failą ir .gitignore pakeitimus. Nuo šiol visi pakeitimai, atlikti su „config / database.yml“, nebus stebimi naudojant „git“.

 $ echo config/database.yml >> .gitignore 

Ačiū

37
02 марта '14 в 12:00 2014-03-02 12:00 atsakymas pateikiamas przbadu 02 kovo 14 d. 12:00 2014-03-02 12:00

Jei norite ištrinti tik kelis konkrečius failus:

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

Jei norite vėl jį stebėti:

 git update-index --no-assume-unchanged path/to/file 
28
21 авг. atsakymas, kurį pateikė Mark Salvatore 2013-08-21 17:20 '13, 17:20, 2013-08-21 17:20

Kaip pranešė dav_i, kad išsaugotumėte failą į repo ir vis tiek pašalintumėte jį iš pakeitimų, nesukuriant papildomų įsipareigojimų, galite naudoti:

 git update-index --assume-unchanged filename 
26
17 апр. Imano Mohamadi atsakymas balandžio 17 d 2015-04-17 10:21 '15, 10:21 AM 2015-04-17 10:21

Visapusiški atsakymai visur!

Tiesiog naudokite šiuos veiksmus.

 git rm -r --cached . 

Jis pašalins failus, kuriuos bandote ignoruoti iš šaltinio, o ne iš vedlio, esančio jūsų kompiuteryje!

Po to tiesiog užrakinkite ir spustelėkite!

25
19 июля '17 в 8:38 2017-07-19 08:38 atsakymą pateikė Ahmad Awais liepos 17 d. 17 val. 8:38 2017-07-19 08:38

Nežinodamas, ką „atsakymas“ komanda padarė, bėgau daug. Jis rekursyviai ištrina kiekvieną failą iš git saugyklos.

Išsaugojimas atsarginėms kopijoms ... Kaip grąžinti „git rm -r“. ?

 git reset HEAD 

Tai triukas, nes turėjau atrakintų vietinių failų, kurių nenorėjau perrašyti.

24
12 апр. atsakymas yra averydev balandžio 12 d 2011-04-12 23:39 '11, 11:39 PM 2011-04-12 23:39

Yra dar vienas pasiūlymas, galbūt lėtiems vaikinams, pvz., Man =) Įdėkite .gitignore failą į saugyklos šaką, kuri nėra .git >. Hooray!

23
19 июня '13 в 0:08 2013-06-19 00:08 atsakymas pateikiamas Olgai birželio 19, 13, 00:08 2013-06-19 00:08

Nė vienas iš atsakymų man nepadarė.

Vietoj

  • Ištraukite failą iš „git“ valdomo katalogo
  • Patikrinkite gitų pašalinimą
  • Perkelkite failą atgal į katalogo gitą

Perkėlus failą, git jį ignoruos.

Dirba su katalogais!

22
15 нояб. Atsakymą pateikė Hunter S 15 lapkričio. 2015-11-15 07:03 '15, 07:03 2015-11-15 07:03

Kita problema, su kuria susidūriau, buvo tai, kad parašiau komentarą.

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

jis veikia

 # ignore my tmp folder tmp/ 
20
06 дек. Atsakymas pateikiamas kindahero 06 Dec. 2011-12-06 16:14 '11 at 16:14 2011-12-06 16:14

Jei failai jau yra versijos valdymo sistemoje, juos reikia ištrinti rankiniu būdu.

18
16 июля '09 в 22:28 2009-07-16 22:28 Atsakymą davė Aragornas liepos 10 d., 09:28, 2009-07-16 22:28

Jūsų atsakymo dėka galėjau parašyti šią mažai linijinę liniją, kad ją pagerintumėte. Buvau jį savo .gitignore ir repo, ir aš neturėjau jokių problemų, bet jei kas nors mato akis rimtas problemas, komentuokite. Tai turėtų būti git rm -r --cached from .gitignore :

katė $ (git rev-parse - rodymas iki lygio) / .gitIgnore | sed "s // $ //" grep -v "^ #" | xargs -L 1 -I {} rasti $ (git rev-parse --show-toplevel) -name "{}" | xargs -1 1 git rm -r - įrašytas

Atkreipkite dėmesį, kad gausite daug fatal: pathspec '<pathspec>' did not match any files . Tai lengva failams, kurie nebuvo pakeisti.

13
03 июля '12 в 20:25 2012-07-03 20:25 atsakymas duotas 0 liepos 12 d. 20:25 2012-07-03 20:25

Su .gitignore rado keistą problemą. Viskas vyko ir atrodė teisinga. Vienintelė priežastis, dėl kurios .gitignore buvo „ignoruojama“, buvo ta, kad linijos pabaiga buvo „Mac“ formatu (r). Todėl po to, kai išsaugojote failą su teisingu eilutės galu (vi naudojant: set ff = unix), viskas veikė kaip žavesys!

10
02 марта '12 в 12:56 2012-03-02 12:56 Atsakymą pateikė Johannes Vetter kovo 12 d. 12 val. 12:56 2012-03-02 12:56

Kita čia nepaminėta problema yra ta, kad sukūrėte .gitignore „Windows“ užrašų knygoje, kurią sužinojau, gali atrodyti kitose platformose. Svarbiausia yra įsitikinti, kad užrašų rinkinyje yra nustatytas ANSI (arba sukurkite failą linux, kaip ir aš).

Mano atsakymas čia: ngn-wiki.ru.site/questions/2007 / ...

9
21 мая '13 в 12:43 2013-05-21 12:43 atsakymą pateikė Matt Parkins gegužės 21 d., 12:43 2013-05-21 12:43

Mano „Linux“ serverio serveryje (netiesa mano vietinio dev master) katalogai ignoruojami, kol pridėsiu žvaigždutę:

WWW / archyvas / *

Aš nežinau, kodėl, bet tai privertė mane prarasti porą valandų, todėl norėjau pasidalinti ...

8
09 марта '13 в 9:36 2013-03-09 09:36 atsakymas pateikiamas ndemoreau kovo 9 d. 13 val. 9:36 2013-03-09 09:36

Reikėtų nepamiršti, kad jei .gitignore neatrodo ignoruojami failai be pėdsakų, tai, kad neturėtumėte komentuoti toje pačioje eilutėje kaip ignoruoti. Taigi tai gerai

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

Bet tai neveiks:

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

.gitignore interpretuoja pastarąjį atvejį kaip „ignoruoti failus su pavadinimu "foo* # ignore all foo.txt, foo.markdown, foo.dat, etc." , kurie, žinoma, neturite.

6
20 февр. Atsakymą pateikė Gabriel Perdue , vasario 20 d. 2016-02-20 01:52 '16 at 1:52 2016-02-20 01:52

Jei jums reikia nustoti stebėti daug ignoruotų failų, galite sujungti kelias komandas:

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

Tai nustos stebėti ignoruojamus failus. Jei norite ištrinti failus iš failų sistemos, --cached - --cached . Taip pat galite nurodyti aplanką, kuris ribotų paiešką, pavyzdžiui:

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

4
20 апр. Atsakymą pateikė Etherealone 20 Bal. 2017-04-20 09:18 '17 at 9:18 2017-04-20 09:18