Warum ignoriert .gitignore meine Dateien nicht?

121

Siehe das Bild unten. Meine .gitignore-Datei sollte alle Dateien in src / dist ignorieren, ist es aber nicht.

Geben Sie hier die Bildbeschreibung ein

Richard
quelle

Antworten:

210

.gitignoreignoriert nur Dateien, die noch nicht Teil des Repositorys sind. Wenn Sie bereits git addeinige Dateien bearbeitet haben, werden deren Änderungen weiterhin nachverfolgt. Um diese Dateien aus Ihrem Repository (aber nicht aus Ihrem Dateisystem) zu entfernen, verwenden Sie git rm --cachedsie.

Elmar Peise
quelle
8
git rm --cached file_name.ext funktioniert gut, damit ich gitignore für eine Datei aktualisieren kann. Vielen Dank.
Sybozz
3
Ich habe das getan, aber GitHub möchte sie immer noch verfolgen und hinzufügen.
Netside
91

Die .gitignore-Datei stellt sicher, dass Dateien, die nicht von Git verfolgt werden, nicht verfolgt werden.

Durch einfaches Hinzufügen von Ordnern / Dateien zu einer .gitignore-Datei werden diese nicht aufgehoben - sie bleiben von Git verfolgt.

Um die Verfolgung von Dateien aufzuheben, müssen die in der .gitignore-Datei aufgelisteten verfolgten Dateien aus dem Repository entfernt werden. Fügen Sie sie dann erneut hinzu und übernehmen Sie Ihre Änderungen.

Der einfachste und gründlichste Weg, dies zu tun, besteht darin, alle Dateien im Repository zu entfernen, zwischenzuspeichern und dann alle wieder hinzuzufügen. Alle in der .gitignore-Datei aufgelisteten Ordner / Dateien werden nicht verfolgt. Führen Sie im obersten Ordner des Repositorys die folgenden Befehle aus:

git rm -r --cached . git add .

Übernehmen Sie dann Ihre Änderungen:

git commit -m "Untrack files in .gitignore"

Bitte beachten Sie, dass alle vorherigen Commits mit den unerwünschten Dateien im Commit-Verlauf verbleiben. Wenn auf GitHub drängen sich bewusst sein einer Geschichte begehen , die enthalten könnten .envoder client_secret.jsonDateien.

Es wird empfohlen, eine Gitignore-Datei zu erstellen und sie mit den Ordnern / Dateien zu füllen, die beim Starten eines Projekts nicht verfolgt werden sollen. Oft ist es jedoch erforderlich, der .gitignore-Datei etwas hinzuzufügen, nachdem festgestellt wurde, dass unerwünschte Dateien verfolgt und gespeichert werden.

MarckK
quelle
Danke für die Antwort. Das hat wirklich geholfen. Vergessen Sie auch nicht, das Repo auf Git zu stellen
Chris Reed,
Nach dem Zurücksetzengit rm -r --cached . funktionieren alle Änderungen auch, um alle Dateien, die mit .gitignore nicht ausgeschlossen werden sollten, erneut hinzuzufügen .
Adam Hurwitz
8

gitignore ignoriert nur nicht verfolgte Dateien. Ihre Dateien werden als geändert markiert - das heißt, sie wurden festgeschrieben und die Vergangenheit und ihre werden jetzt von git verfolgt.

Um sie zu ignorieren, müssen Sie sie zuerst löschen git rm, festschreiben und dann ignorieren.

Igal S.
quelle
5

Sie können git rm -r --cached ./node_modules verwenden. Angenommen, Sie möchten den Knoten ignorieren

sam r
quelle
4

Schau dir das an : .gitignore funktioniert nicht Und besonders die Bemerkung von ADTC:

Stellen Sie sicher, dass Ihre Gitignore-Datei ANSI- oder UTF-8-Codierung verwendet. Wenn etwas anderes wie Unicode BOM verwendet wird, kann Git die Datei möglicherweise nicht lesen. - ADTC 14. Dezember 17 um 12:39 Uhr

Philippe Raemy
quelle
0

Löschen Sie zuerst die Datei index.lock aus Ihrem Git-Repo

rm -f .git/index.lock

und fügen Sie dann .gitignore hinzu

git add .gitignore
KayV
quelle