Een map verwijderen uit git-tracking

Ik moet een map (naam uploads) uitsluiten van tracking. Ik heb geprobeerd te rennen

git rm -r --cached wordpress/wp-content/uploads

en daarna heb ik het pad naar .gitignore toegevoegd

/wordpress/wp-content/uploads

maar toen ik git statusuitvoerde, werden ze weergegeven als verwijderd. Als ik de wijzigingen probeer door te voeren, worden de bestanden verwijderd, niet alleen verwijderd uit de tracking.

Wat doe ik verkeerd?

Ik heb het ook geprobeerd

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

maar dit lijkt alleen bestanden te ontsporen. Maar ik moet een hele map (inclusief submappen) uit tracking verwijderen.


Antwoord 1, autoriteit 100%

Ik kwam deze vraag tegen tijdens het Googlen op “git remove folder from tracking”. De vraag van de OP leidde me naar het antwoord. Ik vat het hier samen voor toekomstige generaties.

Vraag

Hoe verwijder ik een map uit mijn git-repository zonder deze van mijn lokale computer (d.w.z. ontwikkelomgeving) te verwijderen?

Antwoord

Stap 1. Voeg het mappad toe aan het hoofdbestand .gitignorevan je repo.

path_to_your_folder/

Stap 2. Verwijder de map uit je lokale git-tracking, maar bewaar deze op je schijf.

git rm -r --cached path_to_your_folder/

Stap 3. Push je wijzigingen naar je git repo.

De map zal worden beschouwd als “verwijderd” vanuit Git’s oogpunt (dwz ze bevinden zich in het verleden, maar niet in de laatste commit, en mensen die uit deze repo halen, zullen de bestanden uit hun bomen verwijderen), maar blijf op uw werkdirectory omdat u --cachedhebt gebruikt.


Antwoord 2, autoriteit 6%

Dit werkt voor mij:

git rm -r --cached --ignore-unmatch folder_name

--ignore-unmatchis hier belangrijk, zonder die optie zal git afsluiten met een fout in het eerste bestand dat niet in de index staat.


Antwoord 3, autoriteit 2%

Om de map recursief te vergeten, voeg /*/*toe aan het pad:

git update-index --assume-unchanged wordpress/wp-content/uploads/*/*

Het gebruik van git rm --cachedis niet goed voor de samenwerking. Meer details hier: Hoe te stoppen met volgen en wijzigingen aan een bestand in Git negeren?


Antwoord 4, autoriteit 2%

Ik weet dat dit een oude thread is, maar ik wilde er gewoon een beetje aan toevoegen omdat de gemarkeerde oplossing het probleem niet voor mij oploste (hoewel ik het vaak heb geprobeerd).

De enige manier waarop ik kon stoppen met het bijhouden van de map door git form was door het volgende te doen:

  1. Maak een back-up van de lokale map en bewaar deze op een veilige plaats.
  2. Verwijder de map uit uw lokale opslagplaats
  3. Zorg ervoor dat de cache is gewist git rm -r --cached your_folder/
  4. Voeg your_folder/toe aan .gitignore
  5. Wijzigingen doorvoeren
  6. Voeg de back-up weer toe aan uw repo

Je zou nu moeten zien dat de map niet langer wordt bijgehouden.

Vraag me niet waarom het wissen van de cache niet voor mij werkte, ik ben geen Git-superwizard, maar dit is hoe ik het probleem heb opgelost.


Antwoord 5

Van de git-documentatie:

Een ander nuttig ding dat u misschien wilt doen, is het bestand in uw werkboomstructuur te houden, maar het uit uw verzamelgebied te verwijderen. Met andere woorden, misschien wil je het bestand op je harde schijf houden, maar Git het niet meer laten bijhouden. Dit is vooral handig als je iets bent vergeten toe te voegen aan je .gitignore-bestand en het per ongeluk hebt gestaged, zoals een groot logbestand of een heleboel .a gecompileerde bestanden. Gebruik hiervoor de –cached optie:

$ git rm --cached readme.txt

Dus misschien de “-r” niet opnemen?


Antwoord 6

als het bestand is vastgelegd en naar github is gepusht, moet je uitvoeren

git rm --fileName

git ls-filesom ervoor te zorgen dat het bestand wordt verwijderd of niet wordt getraceerd

git commit -m "UntrackChanges"

git push

Other episodes