Ich muss einen Ordner (Namens-Uploads) vom Tracking ausschließen. Ich habe versucht zu rennen
git rm -r --cached wordpress/wp-content/uploads
und danach habe ich den Pfad zu .gitignore hinzugefügt
/wordpress/wp-content/uploads
aber wenn ich lief, werden git status
sie als gelöscht angezeigt. Wenn ich versuche, die Änderungen zu übernehmen, werden die Dateien gelöscht und nicht nur aus der Nachverfolgung entfernt.
Was mache ich falsch?
Ich habe es auch versucht
git update-index --assume-unchanged <file>
Dies scheint jedoch nur Dateien zu entfernen. Ich muss jedoch einen ganzen Ordner (einschließlich Unterordner) aus der Verfolgung entfernen.
reset --hard
, wird es.pull
die woanders diese Dateien begehen werden von dem neuen System gelöscht.Antworten:
Ich bin auf diese Frage gestoßen, als ich nach "git Ordner aus Tracking entfernen" gegoogelt habe. Die Frage des OP führte mich zur Antwort. Ich fasse es hier für zukünftige Generationen zusammen.
Frage
Wie entferne ich einen Ordner aus meinem Git-Repository, ohne ihn von meinem lokalen Computer (dh der Entwicklungsumgebung) zu löschen?
Antworten
Schritt 1. Fügen Sie den Ordnerpfad zur Stammdatei Ihres Repos hinzu
.gitignore
.Schritt 2. Entfernen Sie den Ordner aus Ihrem lokalen Git-Tracking, aber behalten Sie ihn auf Ihrer Festplatte.
Schritt 3. Übertragen Sie Ihre Änderungen auf Ihr Git-Repo.
Der Ordner wird aus Git-Sicht als "gelöscht" betrachtet (dh er befindet sich in der Vergangenheit, aber nicht im letzten Commit, und Personen, die aus diesem Repo ziehen, erhalten die Dateien aus ihren Bäumen entfernt), bleiben jedoch in Ihrem Arbeitsverzeichnis weil du benutzt hast
--cached
.quelle
Das funktioniert bei mir:
--ignore-unmatch
ist hier wichtig, ohne diese Option wird git mit einem Fehler in der ersten Datei beendet, die nicht im Index enthalten ist.quelle
unknown option 'ignore unmatched'
git rm -r --cached --ignore-unmatch .idea/*.xml
Um das Verzeichnis rekursiv zu vergessen, fügen Sie
/*/*
es dem Pfad hinzu:Die Verwendung
git rm --cached
ist nicht gut für die Zusammenarbeit. Weitere Details hier: Wie kann ich das Tracking beenden und Änderungen an einer Datei in Git ignorieren?quelle
Ich weiß, dass dies ein alter Thread ist, aber ich wollte nur ein wenig hinzufügen, da die markierte Lösung das Problem für mich nicht gelöst hat (obwohl ich es oft versucht habe).
Die einzige Möglichkeit, die Verfolgung des Ordners durch Git-Formulare zu stoppen, bestand darin, Folgendes zu tun:
git rm -r --cached your_folder/
your_folder/
.gitignoreSie sollten jetzt sehen, dass der Ordner nicht mehr verfolgt wird.
Fragen Sie mich nicht, warum das Löschen des Caches bei mir nicht funktioniert hat. Ich bin kein Git-Super-Assistent, aber so habe ich das Problem gelöst.
quelle
Aus der Git-Dokumentation:
Eine weitere nützliche Sache, die Sie möglicherweise tun möchten, ist, die Datei in Ihrem Arbeitsbaum zu belassen, sie jedoch aus Ihrem Staging-Bereich zu entfernen. Mit anderen Worten, Sie möchten die Datei möglicherweise auf Ihrer Festplatte behalten, aber Git lässt sie nicht mehr verfolgen. Dies ist besonders nützlich, wenn Sie vergessen haben, Ihrer .gitignore-Datei etwas hinzuzufügen und diese versehentlich bereitgestellt haben, z. B. eine große Protokolldatei oder eine Reihe kompilierter .a-Dateien. Verwenden Sie dazu die Option --cached:
Also vielleicht nicht das "-r" einschließen?
quelle
--cached
. Die-r
Option ist für "rekursiv", was in dieser Instanz enthalten sein sollte.