Frage Ignoriere Dateien, die bereits einem Git-Repository übergeben wurden [duplizieren]


Diese Frage hat hier bereits eine Antwort:

Ich habe ein bereits initialisiertes Git-Repository, dem ich ein hinzugefügt habe .gitignore Datei an. Wie kann ich den Dateiindex aktualisieren, damit die Dateien ignoriert werden, die ich ignorieren möchte?


2189
2017-07-16 19:26


Ursprung


Antworten:


Um ein a Single Datei, die Ihrem Repository bereits hinzugefügt / initialisiert wurde, d.h., stoppen Sie die Verfolgung der Datei, aber löschen Sie sie nicht von Ihrem System aus: git rm --cached filename

Entschlüsseln jeden Datei, die jetzt in Ihrem ist .gitignore:

Begehen Sie zuerst alle ausstehenden Codeänderungenund dann diesen Befehl ausführen:

git rm -r --cached .

Dies entfernt alle geänderten Dateien aus dem Index(Staging-Bereich), dann einfach ausführen:

git add .

Verpflichte es:

git commit -m ".gitignore is now working"

Rückgängig machen git rm --cached filename, benutzen git add filename.

Stellen Sie sicher, dass Sie alle wichtigen Änderungen vor dem Ausführen bestätigen git add .    Andernfalls verlieren Sie alle Änderungen an anderen Dateien.


3656
2017-07-06 17:09



Wenn Sie versuchen, Änderungen an einer Datei zu ignorieren, die bereits im Repository verfolgt wird (z. B. eine dev.properties-Datei, die Sie für Ihre lokale Umgebung ändern müssten, aber diese Änderungen nie einchecken möchten), als Sie möchten ist:

git update-index --assume-unchanged <file>

Wenn Sie Änderungen erneut erfassen möchten

git update-index --no-assume-unchanged <file>

Sehen git-update-index (1) Handbuchseite.

Schauen Sie sich auch die skip-worktree und no-skip-worktree Optionen für update-index, wenn Sie dies nach einem git-reset (über)


Aktualisieren: Da die Leute gefragt haben, ist hier ein bequemer (und aktualisiert seit kommentiert auf) Alias ​​um zu sehen, welche Dateien derzeit "ignoriert" (--assume-unverändert) in Ihrem lokalen Arbeitsbereich sind

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

518
2017-09-14 23:55



Um eine Datei, die bereits zu Ihrem Repository hinzugefügt / initialisiert wurde, aufzuheben, dh die Datei nicht mehr zu löschen, sondern sie von Ihrem System zu löschen, verwenden Sie: git rm --cached filename


351
2017-07-18 08:15



Ja - .gitignore System ignoriert nur Dateien, die derzeit nicht der Versionskontrolle von git unterliegen.

I.e. wenn Sie bereits eine Datei namens test.txt verwenden git-add, dann hinzufügen test.txt zu .gitignore wird noch Änderungen an verursachen test.txt verfolgt werden.

Sie müssten git rm test.txt zuerst und begehe diese Veränderung. Nur dann wird sich ändern test.txt ignoriert werden.


78
2018-02-02 15:59



Entfernen Sie nachfolgende Leerzeichen in .gitignore

Stellen Sie außerdem sicher, dass in Ihrem .gitignore kein Leerzeichen mehr vorhanden ist. Ich kam zu dieser Frage, weil ich nach einer Antwort suchte, dann hatte ich das komische Gefühl, dass ich den Editor öffnen sollte, anstatt nur .gitignore. Entfernte ein einzelnes zusätzliches Leerzeichen vom Ende und poof es funktioniert jetzt :)


50
2017-07-15 07:22



Ich folgte diesen Schritten

git rm -r --cached .
git add .
git reset HEAD

Danach lösche Git alle Dateien (* .swp in meinem Fall) die ignoriert werden sollten.


40
2018-03-02 09:00



Wenn Sie das Verfolgen der Datei stoppen möchten, ohne die Datei von Ihrem lokalen System zu löschen, was ich zum Ignorieren bevorzuge config/database.yml Datei. Einfach versuchen:

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

Jetzt füge diese Datei hinzu .gitignorefile und commit die Änderungen. Und von nun an werden alle Änderungen, die an config / database.yml vorgenommen werden, nicht mehr von git verfolgt.

$ echo config/database.yml >> .gitignore

Vielen Dank


37
2017-08-21 14:20



So entfernen Sie nur bestimmte Dateien von der Verfolgung:

git update-index --assume-unchanged path/to/file

Wenn Sie jemals wieder mit dem Tracking beginnen möchten:

git update-index --no-assume-unchanged path/to/file                      

28
2018-04-17 07:21



Wie dav_i sagt, können Sie, um die Datei in Repo zu behalten und sie dennoch aus Änderungen zu entfernen, ohne ein zusätzliches Commit zu erstellen:

git update-index --assume-unchanged filename

26
2018-04-12 20:39