Wie entferne ich einen Verzeichnis-Teilbaum aus dem Staging-Bereich?
Lesezeit: 2 Minuten
Eichel
Ich habe ein neues Repository erstellt und ausgeführt git add -A. Dann bemerkte ich, dass es einen Ordner mit etwa 100 Dateien gab, die nicht hätten enthalten sein sollen, also fügte ich ihn hinzu .gitignore.
Wie räume ich jetzt den Staging-Bereich frei, damit ich kann add alle meine Dateien wieder unter Berücksichtigung der aktualisierten .gitignore?
Wenn Sie Ihren ersten Commit noch NICHT durchgeführt haben, blasen Sie den .git-Ordner weg. Erstellen Sie die .gitignore-Datei mit dem richtigen Inhalt. Von vorn anfangen. git init, stage, commit.
– Gishu
27. März 2013 um 7:51 Uhr
In #git sagten Sie, Sie hätten versehentlich ein Verzeichnis hinzugefügt, das hätte ignoriert werden sollen, also führen Sie es aus
git rm --cached -r directory-name
um den verwurzelten Baum rekursiv zu entfernen directory-name aus dem Index.
Aktualisieren nicht vergessen .gitignore!
Möchten -r . einfacher sein und dasselbe tun?
– Jonathan Allard
16. September 2012 um 19:32 Uhr
können Sie erwähnen, warum das –cached notwendig ist? Ich verstehe nicht, warum es so ist
– Alexander Mills
30. Mai 2015 um 1:06 Uhr
@AlexMills Die Frage gab ein Verzeichnis an, das mit hinzugefügt wurde git add in den Staging-Bereich, auch bekannt als Cache oder Index. Laut dem git rm Dokumentation an --cached: „Verwenden Sie diese Option, um die Bereitstellung aufzuheben und nur Pfade aus dem Index zu entfernen. Arbeitsbaumdateien, ob geändert oder nicht, werden in Ruhe gelassen.“
– Greg Bacon
10. November 2015 um 1:42 Uhr
Sie können einfach den Befehl verwenden:
git reset
fatal: Failed to resolve 'HEAD' as a valid ref. Ich nehme an, es gibt nichts zurückzusetzen zu noch?
– Eichel
19. März 2011 um 3:29 Uhr
@Eichel, richtig. Ich wusste nicht, dass Sie sich noch nicht für das neue Repo entschieden haben.
– Matthäus Flaschen
19. März 2011 um 3:48 Uhr
In diesem Fall würde ich einfach rm -rf .git && git init . und neu anfangen.
– Jim Mitchener
19. März 2011 um 3:51 Uhr
Dadurch wird alles zurückgesetzt und nicht nur der bestimmte Ordner.
– Schwarz
19. Mai 2018 um 14:59 Uhr
Busverbindungen
Denken Sie daran, die zu setzen s in --global core.excludesfile .gitignore.txt
excludesfile vs excludefile
Vielleicht rettet das jemand anderem die Stunde, die ich verloren habe…
Mit einer ziemlich modernen Git-Version können Sie jetzt Folgendes tun:
git reset foldername/*
Ich habe die früheste Dokumentation für diese Funktion ab Version 2.12.5 gefunden, aber sie funktioniert möglicherweise auch mit älteren Versionen von Git.
13147100cookie-checkWie entferne ich einen Verzeichnis-Teilbaum aus dem Staging-Bereich?yes
Wenn Sie Ihren ersten Commit noch NICHT durchgeführt haben, blasen Sie den .git-Ordner weg. Erstellen Sie die .gitignore-Datei mit dem richtigen Inhalt. Von vorn anfangen. git init, stage, commit.
– Gishu
27. März 2013 um 7:51 Uhr