Ich habe ein vorhandenes Visual Studio-Projekt in meinem Repository. Ich habe kürzlich eine .gitignore-Datei unter meinem Projekt hinzugefügt und gehe davon aus, dass Git angewiesen wird, die in der Datei aufgeführten Dateien zu ignorieren.
Mein Problem ist, dass all diese Dateien bereits verfolgt werden und soweit ich weiß, wird Git eine Datei nicht ignorieren, die bereits verfolgt wurde, bevor dieser Datei eine Regel hinzugefügt wurde, um sie zu ignorieren.
Es wurde vorgeschlagen, sie zu verwenden git rm --cached
und manuell zu entfernen, aber das wird ewig dauern, bis ich sie einzeln durchgesehen habe.
Ich habe darüber nachgedacht, das Repository zu löschen und erneut zu erstellen, diesmal jedoch mit vorhandener .gitignore-Datei, aber es muss einen besseren Weg geben, dies zu tun.
git rm --cached
ganze Verzeichnisse mit der-r
Option, wenn das hilfreich istAntworten:
Diese Antwort löste mein Problem:
Zunächst einmal begehen alle anstehenden Änderungen.
Führen Sie dann diesen Befehl aus:
Dadurch wird alles aus dem Index entfernt und dann einfach ausgeführt:
Verpflichte es:
quelle
git push origin
, um die Änderungen im Remote-Repository widerzuspiegeln..gitignore is now working
Nachricht verwenden. :)Erstellen Sie eine Gitignore-Datei. Dazu erstellen Sie einfach eine leere TXT-Datei.
Dann müssen Sie den Namen ändern und die folgende Zeile in das cmd schreiben (wo
git.txt
ist der Name der Datei, die Sie gerade erstellt haben):rename git.txt .gitignore
Dann können Sie die Datei öffnen und alle nicht verfolgten Dateien schreiben, die Sie endgültig ignorieren möchten. Zum Beispiel sieht meine so aus:
`` `
Da ist ein ganze Sammlung nützlicher .gitignore-Dateien von GitHub
Sobald Sie dies haben, müssen Sie es wie jede andere Datei zu Ihrem Git-Repository hinzufügen, nur muss es sich im Stammverzeichnis des Repositorys befinden.
Dann müssen Sie in Ihrem Terminal die folgende Zeile schreiben:
git config --global core.excludesfile ~ / .gitignore_global
Aus dem offiziellen Dokument:
Wenn das Respository bereits vorhanden ist, müssen Sie die folgenden Befehle ausführen:
Wenn Schritt 2 nicht funktioniert, sollten Sie die gesamte Route der Dateien schreiben, die Sie hinzufügen möchten.
quelle
Wie hier angegeben Sie können den Index aktualisieren:
Auf diese Weise werden die Dateien nicht in
git status
oder angezeigtgit diff
.Um die Dateien erneut zu verfolgen, können Sie Folgendes ausführen:
quelle
Wenn Sie Ihre hinzugefügt haben
.gitignore
zu spät , verfolgt git unabhängig davon weiterhin festgeschriebene Dateien. Um dies zu beheben, können Sie jederzeit alle zwischengespeicherten Instanzen der unerwünschten Dateien entfernen.Um zu überprüfen, welche Dateien Sie tatsächlich verfolgen, können Sie zunächst Folgendes ausführen:
git ls-tree --name-only --full-tree -r HEAD
Angenommen, Sie haben unerwünschte Dateien in einem solchen Verzeichnis gefunden
cache/
. Es ist sicherer, auf dieses Verzeichnis als auf alle Ihre Dateien zuzugreifen.Also statt:
git rm -r --cached .
Es ist sicherer, auf die unerwünschte Datei oder das unerwünschte Verzeichnis abzuzielen:
git rm -r --cached cache/
Fügen Sie dann alle Änderungen hinzu.
git add .
und begehen ...
git commit -m ".gitignore is now working"
Referenz: https://amyetheredge.com/code/13.html
quelle
Hier ist eine Möglichkeit, alle Dateien zu "entfernen", die ansonsten unter den aktuellen Ausschlussmustern ignoriert würden:
Dadurch bleiben die Dateien in Ihrem Arbeitsverzeichnis, werden jedoch aus dem Index entfernt.
Der hier verwendete Trick besteht darin, eine nicht vorhandene Indexdatei für Git-ls-Dateien bereitzustellen, sodass davon ausgegangen wird, dass keine verfolgten Dateien vorhanden sind. Der obige Shell-Code fragt nach allen Dateien, die ignoriert würden, wenn der Index leer wäre, und entfernt sie dann mit git rm aus dem tatsächlichen Index.
Nachdem die Dateien "nicht mehr verfolgt" wurden, überprüfen Sie mit dem Git-Status, ob nichts Wichtiges entfernt wurde (passen Sie in diesem Fall Ihre Ausschlussmuster an und verwenden Sie den Git-Reset-Pfad, um den entfernten Indexeintrag wiederherzustellen). Machen Sie dann ein neues Commit, das den „Rohstoff“ auslässt.
Der "Rohstoff" wird immer noch in alten Commits sein. Sie können git filter-branch verwenden, um saubere Versionen der alten Commits zu erstellen, wenn Sie wirklich einen sauberen Verlauf benötigen (nb, der git filter-branch verwendet, schreibt den Verlauf neu, daher sollte dies nicht leichtfertig durchgeführt werden, wenn Sie Mitarbeiter haben, die gezogen haben eine Ihrer historischen Verpflichtungen, nachdem der „Rohstoff“ zum ersten Mal eingeführt wurde).
quelle
Entfernen Sie Dateien aus dem Staging-Bereich
Fügen Sie alle Änderungen hinzu
Verpflichte es:
quelle
Ich denke, dies ist eine einfache Möglichkeit, eine .gitignore- Datei zu einem vorhandenen Repository hinzuzufügen .
Voraussetzung :
Sie benötigen einen Browser, um auf Ihr Github-Konto zuzugreifen.
Schritte
Habe Spaß!
quelle
Verwenden
git clean
Sie Hilfe zum Ausführen
Wenn Sie sehen möchten, was zuerst passieren würde, müssen Sie den Schalter -n für einen Trockenlauf übergeben:
So entfernen Sie gitingnored Müll
Achtung: Möglicherweise ignorieren Sie lokale Konfigurationsdateien wie database.yml, die ebenfalls entfernt würden. Benutzung auf eigene Gefahr.
Dann
quelle