Ignorieren Sie Dateien, die bereits an ein Git-Repository übergeben wurden [duplicate]

Lesezeit: 7 Minuten

Ignorieren Sie Dateien die bereits an ein Git Repository ubergeben wurden
Trobrock

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

a Einzel Datei, die bereits zu Ihrem Repository hinzugefügt/initialisiert wurde, dhverfolgen Sie die Datei nicht mehr, aber löschen Sie sie nicht aus Ihrem System. Verwenden Sie Folgendes: git rm --cached filename

Untracking jeden Datei, die sich jetzt in Ihrer befindet .gitignore:

Bestätigen Sie zuerst alle ausstehenden Codeänderungenund führen Sie dann diesen Befehl aus:

git rm -r --cached .

Dadurch werden alle geänderten Dateien aus der entfernt Index(Bereitstellungsbereich), dann führe einfach aus:

git add .

Begehen Sie es:

git commit -m ".gitignore is now working"

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

Stellen Sie sicher, dass Sie alle wichtigen Änderungen festschreiben, bevor Sie sie ausführen git add .
Andernfalls gehen alle Änderungen an anderen Dateien verloren.

Bitte seien Sie vorsichtig, wenn Sie dies in ein Repository verschieben und von woanders in einen Zustand ziehen, in dem diese Dateien noch verfolgt werden, werden die Dateien GELÖSCHT

  • Denken Sie daran, alle Ihre Änderungen vorher zu bestätigen, da Sie sonst die Kontrolle über alle geänderten Dateien verlieren

    – Hoang Pham

    13. Januar 2010 um 14:48 Uhr

  • @TravisWebb Sie müssten sicherstellen, dass Sie zuerst .gitignore einrichten. Außerdem neige ich dazu, nicht alle Dateien aus dem Index zu entfernen, sondern nur die, die ich brauche, indem ich Fileglobs wie *.o verwende

    – Jason S

    27. Dezember 2011 um 20:41 Uhr

  • git rm -r –cached . entfernt viel mehr Dateien als im Git Ignorieren für mich 🙁 :(. Es entfernte Dateien in Verzeichnissen, die ich nicht einmal aufgelistet habe

    – Dekan Hiller

    14. August 2012 um 20:07 Uhr

  • Tolle Antwort, aber git rm --cached filename scheint etwas weniger drastisch zu sein imho..

    – Jim Morrison

    21. Oktober 2013 um 20:37 Uhr


  • @JimMorrison du verfehlst den Punkt. Wenn Sie ein großes Projekt mit einer komplizierten .gitignore-Datei haben (z. B. ein C#-Projekt in Visual Studio), ist es mühsam, jede einzelne zu entfernende Datei herauszufinden. Diese drei einfachen Befehle beheben alles schmerzlos.

    – langer Hals

    13. November 2013 um 13:52 Uhr

Ignorieren Sie Dateien die bereits an ein Git Repository ubergeben wurden
dyodji

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 Sie diese Änderungen niemals einchecken möchten), als das, was Sie tun möchten ist:

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

Wenn Sie Änderungen erneut verfolgen möchten

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

Sehen git-update-index(1) Handbuchseite.

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


Update: Da die Leute gefragt haben, hier ist ein praktischer (und aktualisierter, da unten kommentierter) Alias, um zu sehen, welche Dateien derzeit in Ihrem lokalen Arbeitsbereich “ignoriert” (–assume-unchanged) werden

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

  • Das ist genial! Genial nützlich. Wissen Sie, ob es eine Möglichkeit gibt, eine Liste aller „angehaltenen“ Dateien zu erhalten?

    – Kunstvoller Roboter

    5. Februar 2013 um 13:06 Uhr

  • Das wird für Sie funktionieren: git ls-files -v Wenn das gedruckte Zeichen ein Kleinbuchstabe ist, wird die Datei als unverändert markiert markiert. siehe: stackoverflow.com/a/2363495/677381 und: git-scm.com/docs/git-ls-files

    – dyodji

    6. Februar 2013 um 1:33 Uhr


  • Hier ist meine etwas ausführlichere Version der ignored Alias, wie er in meiner Datei ~/.gitconfig erscheint: ignored = !git ls-files -v $(git rev-parse --show-toplevel) | (grep '^[[:lower:]]' || echo 'None ignored.') && echo '\nIgnore changes with: git update-index --assume-unchanged <file> \nor track again with: git update-index --no-assume-unchanged <file>' Der oberste Teil davon stellt sicher, dass das gesamte Repository durchsucht wird.

    – Chris

    10. Februar 2015 um 6:22 Uhr


  • Unglücklicherweise --assume-unchanged funktioniert nicht mit git stash: Die Änderungen werden während rückgängig gemacht git stash und währenddessen nicht erneut angewendet git stash pop. Siehe diese Frage.

    – Scott Weldon

    27. April 2016 um 17:39 Uhr

  • Ich bin mir nicht sicher, ob die Syntax auf dem Mac anders ist, aber ich musste den Alias ​​leicht ändern git config --global alias.hidden '!git ls-files -v | grep "^[[:lower:]]"'

    – Cristian Ramírez

    13. März 2018 um 16:14 Uhr

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

  • Dies war der perfekte Weg, um die paar Dateien zu entfernen, die ich hinzugefügt, festgeschrieben, aber später festgestellt hatte, dass sie nicht nachverfolgt werden mussten. Nachdem ich diese Dateien zu .gitignore hinzugefügt hatte, konnte ich dies tun und sie perfekt untracken.

    – Andreas Larned

    8. April 2011 um 16:17 Uhr

  • Tipp: zum Beispiel wenn Sie hinzufügen *.config zu deinem .gitignoredu kannst tun git rm --cached *.config zu stoppen, alle zu verfolgen *.config Dateien.

    – dav_i

    6. März 2013 um 13:30 Uhr


  • Beachten Sie auch, dass dadurch die Dateien aus anderen Repos gelöscht werden, in die Sie pushen, obwohl sie auf Ihrem System verbleiben. Wenn Sie Änderungen an Dateien einfach ignorieren und sie nicht aus den Repos anderer Benutzer löschen möchten, versuchen Sie es mit git update-index --assume-unchanged file.name

    – dav_i

    8. März 2013 um 10:15 Uhr

  • IMO, das ist die richtige Antwort. Die Wiki-Antwort funktioniert irgendwie, ist aber furchtbar schwerfällig, besonders angesichts der Frage. (Ich würde das Wiki reparieren, aber ich bin mir nicht sicher wie. “Bald!” 😉

    – Oli

    17. Juli 2014 um 3:20 Uhr

  • @Olie sein äußerst Vorsicht mit dieser “Lösung”. Dies Wille Entfernen Sie die Datei im Repo, und jeder, der diese Änderung durchführt, wird die Datei ebenfalls entfernen lassen. Die beste Lösung wäre assume-unchangedwie @dav_i sagte, oder --skip-worktree als Alternative.

    – Sebastianb

    12. September 2017 um 20:37 Uhr

1646914090 491 Ignorieren Sie Dateien die bereits an ein Git Repository ubergeben wurden
Anton Stubbs

Jawohl – .gitignore Das System ignoriert nur Dateien, die derzeit nicht unter Versionskontrolle von Git stehen.

Dh wenn Sie bereits eine Datei namens test.txt verwenden git-adddann hinzufügen test.txt zu .gitignore wird noch Änderungen an verursachen test.txt verfolgt werden.

Sie müssten git rm test.txt zuerst und begehen Sie diese Änderung. Erst dann werden Änderungen vorgenommen test.txt ignoriert werden.

Entfernen Sie abschließende Leerzeichen in .gitignore

Stellen Sie außerdem sicher, dass Ihre .gitignore-Datei keine nachgestellten Leerzeichen enthält. Ich bin auf diese Frage gekommen, weil ich nach einer Antwort gesucht habe, dann hatte ich das komische Gefühl, ich sollte den Editor öffnen, anstatt nur .gitignore zu cat’en. Ein einzelnes zusätzliches Leerzeichen am Ende entfernt und Puh es funktioniert jetzt 🙂

  • Ich hatte genau das gleiche Problem :P. Ich bin deswegen auch auf diese Frage gekommen. Gut, dass du das hier dokumentiert hast. +1

    – Hindol

    11. Juli 2012 um 5:08 Uhr

  • Wenn Sie wie ich vi verwenden, um .gitignore schnell zu bearbeiten, verwenden Sie ‘:set list’, um Leerzeichen anzuzeigen.

    – Sam Giles

    12. März 2013 um 16:35 Uhr

  • Das ist mir passiert, als ich a gemacht habe echo node_modules >> .gitignore (zumindest unter Windows)

    – Khôi

    3. Mai 2014 um 20:16 Uhr

  • Wochenlang war ich darüber frustriert, bis ich Ihren Whitespace-Beitrag sah. Danke, mein Problem behoben.

    – Flammen

    8. Oktober 2015 um 22:01 Uhr

1646914090 74 Ignorieren Sie Dateien die bereits an ein Git Repository ubergeben wurden
Orlando

Ich habe diese Schritte befolgt

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

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

  • Ich hatte genau das gleiche Problem :P. Ich bin deswegen auch auf diese Frage gekommen. Gut, dass du das hier dokumentiert hast. +1

    – Hindol

    11. Juli 2012 um 5:08 Uhr

  • Wenn Sie wie ich vi verwenden, um .gitignore schnell zu bearbeiten, verwenden Sie ‘:set list’, um Leerzeichen anzuzeigen.

    – Sam Giles

    12. März 2013 um 16:35 Uhr

  • Das ist mir passiert, als ich a gemacht habe echo node_modules >> .gitignore (zumindest unter Windows)

    – Khôi

    3. Mai 2014 um 20:16 Uhr

  • Wochenlang war ich darüber frustriert, bis ich Ihren Whitespace-Beitrag sah. Danke, mein Problem behoben.

    – Flammen

    8. Oktober 2015 um 22:01 Uhr

1646914091 983 Ignorieren Sie Dateien die bereits an ein Git Repository ubergeben wurden
Ahmed Awais

Komplexe Antworten überall!

Verwenden Sie einfach Folgendes

git rm -r --cached .

Es entfernt die Dateien, die Sie ignorieren möchten, vom Ursprung und nicht vom Master auf Ihrem Computer!

Danach einfach verpflichten und pushen!

987850cookie-checkIgnorieren Sie Dateien, die bereits an ein Git-Repository übergeben wurden [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy