Kaip sustabdyti stebėjimą ir ignoruoti failo pakeitimus „git“?

.csproj projektą, kuriame yra keletas .csproj failų. Man nereikia / kaip vietinių csproj failų, kuriuos stebi „Git“ (arba atnešė, kai sukuriamas pleistras), bet akivaizdu, kad jie reikalingi projektui.

Į „LOCAL .gitignore pridėjau *.csproj , bet failai jau yra repo.

Kai csproj Git“ būseną, jis rodo mano csproj pakeitimus, kurių csproj stebėti arba siųsti pleistrus.

Kaip ištrinti šių failų „stebėjimą“ iš savo asmeninio atpirkimo (bet išsaugoti juos šaltinyje, kad galėčiau juos naudoti), kad nematau pakeitimų, kai atlieku būseną (arba sukuriu pleistrą)?

Ar yra teisingas / kanoninis būdas valdyti šią situaciją?

1306
01 июня '09 в 22:08 2009-06-01 22:08 Joshua Ball paprašė birželio 1 d
@ 12 atsakymų

Tiesiog skambinant „ git rm --cached - kiekvienam failui, kurį norite pašalinti iš versijos valdymo, turėtų būti gerai. Nors vietiniai šablonai yra ignoruojami, šie failai nebus įtraukti į „git“ būsenos išėjimą.

Atkreipkite dėmesį, kad šis sprendimas pašalina failus iš saugyklos, todėl visi kūrėjai turės išlaikyti savo vietines (nekontroliuojamas kontroliuojamas) failo kopijas.

Jei norite užkirsti kelią „git“ aptikti šių failų pakeitimus, turėtumėte naudoti šią komandą:

 git update-index --assume-unchanged [path] 

Ką tikriausiai norite padaryti: (žemiau @Ryan Taylor atsakymo )

  1. Tai reiškia, kad git jums reikia savo nepriklausomos failo ar aplanko versijos. Pavyzdžiui, nenorite perrašyti (arba ištrinti) konfigūracijos failų kūrimo / kūrimo.

git update-index --skip-worktree <path-name>

Pilnas atsakymas čia šiame URL yra: http://source.kohlerville.com/2009/02/untrack-files-in-git/

1670 m
01 июня '09 в 22:16 2009-06-01 22:16 atsakymą pateikė anthony, birželio 01'09, 10:16 2009-06-01 22:16

Jei paleidžiate „ git update-index --assume-unchanged file.csproj , „git“ automatiškai neperžiūrės .csproj failo pakeitimų: jis sustabdys juos, kai kiekviename pakeitime pasirodys „Git“ būsena. Tokiu būdu galite pažymėti visus savo .csproj failus, nors turėsite rankiniu būdu pažymėti visus naujus, kuriuos saugykla jums siunčia. (Jei turite juos .gitignore arba .git/info/exclude , tada tie, kuriuos sukuriate, bus ignoruojami)

border=0

Aš nesu tikras, kokie .csproj failai ... jei jie yra kažkas panašaus į IDE konfigūravimo linijas (panašiai kaip „Eclipse.eclipse“ ir „.classpath“ failai), tada aš siūlau, kad jie niekada nebus šaltiniai, kontroliuojami. Kita vertus, jei jie yra kūrimo sistemos dalis (pvz., „Failų kūrimas“), aišku, kad jiems reikia --- ir būdas gauti papildomų vietinių pakeitimų (pvz., Iš „local.csproj a la config.mk“) bus naudingas: padalinkite kūrinį dėl pasaulinių dalių ir vietinių nepaisymų.

212
01 июня '09 в 22:24 2009-06-01 22:24 atsakymas pateikiamas araqnid 01 birželio 09 d. 10:24 val. 2009-06-01 22:24

Tai dviejų etapų procesas:

  • Pašalinkite failo / aplanko stebėjimą - bet išsaugokite juos diske

     git rm --cached 

    Dabar jie nėra rodomi kaip „modifikuoti“, bet vis dar rodomi kaip

      untracked files in git status -u 
  • Pridėti juos į .gitignore

124
02 авг. atsakymas pateikiamas rjha94 02 rug . 2011-08-02 17:25 '11 at 17:25 2011-08-02 17:25

Priimtas atsakymas man vis tiek neveikia.

Aš naudoju

git rm -r - įrašytas.

git pridėti.

git įsipareigojimas -m "nustatymas .gitignore"

Rasta atsakymo iš čia

70
18 сент. atsakymą pateikė Buddhika Hasthanayake . 2014-09-18 08:44 '14, 8:44 2014-09-18 08:44

Yra 3 variantai, kuriuos tikriausiai norite # 3

1. Jis išsaugos vietinį failą jums, bet jį ištrins kitam, kai jis traukia.

git rm --cached <file-name> arba git rm -r --cached <folder-name>

2. Tai, pavyzdžiui, yra optimizuoti, pavyzdžiui, aplankus, kuriuose yra daug failų. SDK, kurie tikriausiai niekada nepasikeis. Jis pasakoja gitui nebetęsti šio didžiulio aplanko tikrinimo kiekvieną kartą, kai jis bus pakeistas.

 git update-index --assume-unchanged <path-name> 

3. Tai reiškia, kad git jums reikia savo nepriklausomos failo ar aplanko versijos. Pvz., Nenorite perrašyti (arba ištrinti) kūrimo / vietos nustatymo failų.

 git update-index --skip-worktree <path-name> 

Svarbu žinoti, kad „ git update-index neplatins naudojant „git“, o kiekvienas vartotojas turės jį paleisti.

66
27 окт. atsakymą pateikė Ryan Taylor, spalio 27 d 2016-10-27 00:18 '16 at 0:18 2016-10-27 00:18

Pamiršote .gitignore?

Jei turite visą projektą vietoje, bet pamiršote pridėti git, kad ignoruotumėte jus ir dabar stebėtumėte kai kuriuos nereikalingus failus, naudokite šią komandą, kad pašalintumėte visus

 git rm --cached -r . 

įsitikinkite, kad esate projekto šaknis.

Tada galite padaryti įprastą

Pridėti

 git add . 

Norėdami pataisyti

 git commit -m 'removed all and added with git ignore' 

Spustelėkite

 git push origin master 

Išvada

Tikiuosi, kad tai padės žmonėms, kuriems reikia keisti savo .gitignore ar pamiršote viską kartu.

  • Pašalina visą talpyklą
  • Pažvelkite į savo .gitignore
  • Prideda norimus stebėti failus.
  • Nuleidžia repo
33
04 нояб. Atsakymą pateikė Joe Lloyd lapkričio 4 d. 2015-11-04 13:25 '15, 15:25 pm 2015-11-04 13:25

Norint sutaupyti laiko, taisyklės, kurias pridėsite prie .gitignore, gali būti naudojamos keliems failams / aplankams ištrinti, ty

git rm --cached app*.xml

arba

git rm --cached -r app/widgets/yourfolder/

ir kt

20
07 нояб. Atsakymą pateikė Peter 07 Nov. 2013-11-07 16:18 '13, 16:18, 2013-11-07 16:18

Kaip nurodyta kituose atsakymuose, pasirinktas atsakymas yra neteisingas.

atsakymas į kitą klausimą leidžia manyti, kad tai gali būti skip-worktree, kuris bus reikalingas.

 git update-index --skip-worktree <file> 
19
12 мая '15 в 14:33 2015-05-12 14:33 atsakymas pateikiamas__new_mr gegužės 12 d., 15 val. 14:33 2015-05-12 14:33

Norėdami išvengti failų stebėjimo naudojant „git“

 git update-index --assume-unchanged [file-path] 

Ir norėdami jį sugrąžinti, naudokite

 git update-index --no-assume-unchanged [file-path] 
2
18 апр. atsakymas pateikiamas shijin 18 Bal 2017-04-18 12:41 '17 at 12:41 2017-04-18 12:41

Manau, kad klausiate, kaip ištrinti VISUS failus konkrečiame aplanke ar aplanke, o ne pasirinkti kiekvieną failą atskirai.

Galite naudoti šią komandą:

git rm -r -f /<floder-name>\*

Įsitikinkite, kad esate pagrindiniame katalogo kataloge.
Ši komanda rekursyviai „ištrins“ visus failus, esančius dėžutės / kūrimo / aplankų faile. Žodžiu ištrinti, aš turiu galvoje, kad git bus apsimesti, kad šie failai yra „ištrinti“ ir šie failai nebus stebimi. „Git“ tikrai pažymi, kad šie failai yra ištrinti.

Įsitikinkite, kad jūsų .gitignore yra pasirengęs artėjantiems įsipareigojimams.
Dokumentacija: git rm

0
06 апр. atsakymą pateikė Vraj Pandya 06 balandžio. 2015-04-06 16:47 '15 at 16:47 2015-04-06 16:47

Manau, kad bandote ištrinti vieną failą iš git. tam norėčiau rekomenduoti toliau nurodytą komandą.

git update-index -assume nepakeista

Ex-git atnaujinimo indeksas - svoris nepakeistas .gitignore.idea / compiler.xml

0
04 апр. Atsakymą pateikė Pankaj Sonani 04 balandžio. 2017-04-04 20:04 '17 at 8:04 pm 2017-04-04 20:04

Problemą gali sukelti darbo tvarka. Jei pirmą kartą modifikavote .gitignore, tada git rm - cached xxx, jums gali tekti spręsti šią problemą.

Teisingas sprendimas:

  • git rm - cached xxx
  • pakeistas .gitignore

Neteisinga tvarka!

Po pakeitimo paleiskite .gitignore!

0
24 марта '17 в 20:05 2017-03-24 20:05 atsakymą pateikė Thearyong kovo 24 d. 17 d. 20:05 2017-03-24 20:05

Kiti klausimai apie žymę arba Užduoti klausimą