Wie entferne ich eine Datei aus dem Index (= Staging-Bereich = Cache), ohne sie aus dem Dateisystem zu entfernen?
Wie entferne ich eine Datei aus dem Index (= Staging-Bereich = Cache), ohne sie aus dem Dateisystem zu entfernen?
Antworten:
Sie wollen:
git rm --cached [file]
Wenn Sie die --cached
Option weglassen , wird sie auch aus dem Arbeitsbaum gelöscht. git rm
ist etwas sicherer als git reset
, da Sie gewarnt werden, wenn der bereitgestellte Inhalt weder mit der Spitze des Zweigs noch mit der Datei auf der Festplatte übereinstimmt. (Wenn nicht, müssen Sie hinzufügen --force
.)
git rm --cached
diese Option, um sie aus dem Repo zu entfernen, die entsprechenden Dateien oder Verzeichnisse zu .gitignore hinzuzufügen, zu inszenieren und wie gewohnt festzuschreiben. Sie werden aus dem Repo entfernt, bleiben aber in Ihrem lokalen Baum unberührt, und Sie werden sie nicht versehentlich erneut einchecken.
Dies sollte eine <Datei> für Sie aufheben (ohne die Datei zu entfernen oder anderweitig zu ändern):
git reset <file>
HEAD
.
HEAD
!
git reset HEAD <file>
zum Entfernen einer bestimmten Datei aus dem Index.
und
git reset HEAD
zum Entfernen aller indizierten Dateien.
Abhängig von Ihrem Workflow benötigen Sie diese Option möglicherweise selten genug, um eine Befehlszeilenlösung zu finden (es sei denn, Sie arbeiten aus irgendeinem Grund ohne grafische Oberfläche).
Verwenden Sie einfach eines der GUI-basierten Tools, die die Indexverwaltung unterstützen, zum Beispiel:
git gui
<- verwendet das Tk-Fenster-Framework - ähnlich wie gitk
git cola
<- eine modernere GUI-OberflächeMit diesen können Sie Dateien per Mausklick in den Index ein- und aus dem Index verschieben. Sie unterstützen sogar das Auswählen und Verschieben von Teilen einer Datei (einzelne Änderungen) zum und vom Index.
Wie wäre es mit einer anderen Perspektive: Wenn Sie Fehler machen, während Sie einen der vorgeschlagenen, eher kryptischen Befehle verwenden:
git rm --cached [file]
git reset HEAD <file>
... Sie haben eine echte Chance, Daten zu verlieren - oder es zumindest schwer zu finden. Wenn Sie dies nicht wirklich mit sehr hoher Frequenz tun müssen, ist die Verwendung eines GUI-Tools wahrscheinlich sicherer .
Aufgrund der Kommentare und Abstimmungen habe ich festgestellt, dass viele Leute den Index ständig verwenden. Ich nicht. Hier ist wie:
git commit -a
git commit (list of files)
git commit -a
und ändern Sie sie dann übergit gui
git difftool --dir-diff --tool=meld
git commit -a
. Als ich diese Frage beantwortete, war es, weil ich (einen exotischen) " inversen Kirschpickel " gemacht hatte, der Dateien in den Index für Sie einfügt, aber ich wollte eine Datei vor dem Festschreiben bearbeiten. Ich habe die Datei aus dem Index genommen, während ich sie bearbeitet habe, damit die Unterschiede so funktionieren, wie ich es gewohnt bin.
rm
, aber ich dachte zuerst, ein Zweigwechsel würde den ignorierten Ordner nicht zerstören. aber ... ich benutze ein Github "GUI-basiertes" Tool, das gut genug für mich ist und unterstütze einige Indexverwaltungen, außer es unterstützt dies nicht. Also, was, sollte ich 2 GUI für den engen Gebrauch verwenden? kann der Antwort immer noch nicht zustimmen.