Wie konfiguriere ich Git, um einige Dateien lokal zu ignorieren?

Lesezeit: 8 Minuten

Wie konfiguriere ich Git um einige Dateien lokal zu ignorieren
Björn

Kann ich Dateien lokal ignorieren, ohne die globale Git-Konfiguration für alle anderen zu verschmutzen? Ich habe nicht nachverfolgte Dateien in meinem Git-Status, die Spam sind, aber ich möchte nicht für jede einzelne kleine zufällige nicht nachverfolgte Datei, die ich in meinen lokalen Branches habe, Änderungen an der Git-Konfiguration vornehmen.

Wie konfiguriere ich Git um einige Dateien lokal zu ignorieren
Josh Lee

Von die entsprechende Git-Dokumentation:

Muster, die für ein bestimmtes Repository spezifisch sind, die aber nicht mit anderen verwandten Repositorys geteilt werden müssen (z. B. Hilfsdateien, die sich innerhalb des Repository befinden, aber spezifisch für den Arbeitsablauf eines Benutzers sind), sollten in die $GIT_DIR/info/exclude Datei.

Die .git/info/exclude Datei hat das gleiche Format wie jede andere .gitignore Datei. Eine weitere Option ist das Einstellen core.excludesFile auf den Namen einer Datei, die globale Muster enthält.

Beachten Sie, wenn Sie bereits nicht bereitgestellte Änderungen haben, müssen Sie nach dem Bearbeiten Ihrer Ignoriermuster Folgendes ausführen:

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

Hinweis auf $GIT_DIR: Dies ist eine verwendete Notation überall das Git-Handbuch, um einfach den Pfad zum Git-Repository anzugeben. Wenn die Umgebungsvariable gesetzt ist, überschreibt sie den Speicherort des Repos, in dem Sie sich befinden, was wahrscheinlich nicht das ist, was Sie wollen.


Bearbeiten: Eine andere Möglichkeit ist die Verwendung von:

git update-index --skip-worktree <file-list>

Kehren Sie es um:

git update-index --no-skip-worktree <file-list>

  • Als Hinweis, stellen Sie sicher, dass Sie laufen git update-index --assume-unchanged [<file>...] nach dem Hinzufügen zur Exclude-Datei. Bis dahin werden die Änderungen nicht übernommen.

    – tollmanz

    30. März 2013 um 16:05 Uhr

  • Ich musste ‘git update-index …’ nicht ausführen, damit die Änderungen mit git 1.7.9.5 wirksam wurden.

    – Jeffrey Martinez

    9. Dezember 2013 um 5:30 Uhr

  • Sie müssen git update-index nur verwenden, wenn Sie bereits eine Änderung an der Datei vorgenommen haben und diese nun ignorieren möchten. Wenn Sie den Ausschluss ändern, bevor Sie die Änderung vornehmen, ist dies nicht erforderlich.

    – Brady Emerson

    24. Juni 2014 um 0:45 Uhr


  • Während dies verhindert, dass die Datei während Commits wie .gitignore als geändert angezeigt wird, werden die Datei(en) im Gegensatz zu ignorierten Dateien immer noch auf die Repo-Version zurückgesetzt, wenn Sie git reset –hard ausführen.

    – Brady Emerson

    24. Juni 2014 um 0:47 Uhr

  • Per stackoverflow.com/questions/23097368/… und stackoverflow.com/questions/13630849/…, skip-worktree würde wahrscheinlich bevorzugt werden assume-unchanged.

    – danShumway

    22. Juli 2015 um 2:39 Uhr

1646883491 271 Wie konfiguriere ich Git um einige Dateien lokal zu ignorieren
Florian Seßer

Aktualisieren: Erwägen Sie die Verwendung git update-index --skip-worktree [<file>...] stattdessen danke @danShumway! Siehe Borealids Erklärung zum Unterschied der beiden Optionen.


Alte Antwort:

Wenn Sie lokale Änderungen an nachverfolgten Dateien ignorieren müssen (wir haben das mit lokalen Änderungen an Konfigurationsdateien), verwenden Sie git update-index --assume-unchanged [<file>...].

  • Nur zur Anmerkung, ich habe eine Datei zu $GIT_DIR/info/exclude hinzugefügt (z. B. my-file.php) und musste sie dann ausführen git update-index --assume-unchanged my-file.php damit es anfängt, ignoriert zu werden. Danke für den Tipp!

    – tollmanz

    30. März 2013 um 16:04 Uhr

  • Um es rückgängig zu machen: git update-index --no-assume-unchanged my-file.php

    – Strahl

    31. Juli 2013 um 16:14 Uhr


  • Nur zur Verdeutlichung: angenommen-unverändert ist für nachverfolgte Dateien (im Repo vorhanden) … OP hat in diesem Fall nach UNverfolgten Dateien gefragt .git/info/exclude ist, was Sie wollen (um zu vermeiden, dass die oft geteilte und verfolgte .gitignore-Datei verschmutzt wird)

    – dyodji

    30. Januar 2014 um 1:56 Uhr

  • Laut stackoverflow.com/questions/23097368/… gilt dies als unsicher, und Ihre Dateien können trotzdem festgeschrieben werden, wenn Sie nicht aufpassen. Es ist als Leistungshilfe gedacht, nicht als idiotensichere Lösung für dieses Problem.

    – danShumway

    16. Juli 2015 um 23:16 Uhr

  • Ich eilte zu --assume-unchanged bevor Sie Ihre lesen aktualisieren. Ich machte mit --no-assume-unchanged und dann tat das --skip-worktree… Bin ich im Klaren?

    – Nikolaus Miari

    7. Juli 2016 um 5:11 Uhr

Fügen Sie die folgenden Zeilen hinzu [alias] Abschnitt Ihrer .gitconfig-Datei

ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"

Jetzt können Sie verwenden git ignore my_file Änderungen an der lokalen Datei zu ignorieren, und git unignore my_file um die Änderungen nicht mehr zu ignorieren. git ignored listet die ignorierten Dateien auf.

Diese Antwort stammt von http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html.

  • “!git ls-files -v | grep “^[[:lower:]]” – Weißt du vielleicht, wie man das mit Windows cmd macht?

    – Haohmaru

    28. März 2018 um 20:20 Uhr

  • Installieren Sie eine echte Shell (z. B. bietet Babun bash oder zsh) 😉 Ich kenne Ihre Gefühle, aber ich bin kürzlich von Windows auf Linux umgestiegen und würde cmd nie wieder verwenden.

    – xeruf

    6. Juni 2018 um 6:50 Uhr


  • @Haohmaru, Sie könnten immer WSL (Windows Subsystem for Linux) verwenden.

    – Eine Gr

    10. Januar 2020 um 9:49 Uhr

  • BEEINDRUCKEND ! tolle Befehle

    – jo_

    4. Februar um 10:37 Uhr

1646883491 31 Wie konfiguriere ich Git um einige Dateien lokal zu ignorieren
Emil Sit

Sie haben mehrere Möglichkeiten:

  • Hinterlasse ein schmutziges (oder nicht festgelegtes) .gitignore Datei in Ihrem Arbeitsverzeichnis (oder automatisch anwenden mit topgit oder ein anderes solches Patch-Tool).
  • Setzen Sie die Ausschlüsse in Ihre $GIT_DIR/info/exclude Datei, wenn diese für einen Baum spezifisch ist.
  • Laufen git config --global core.excludesfile ~/.gitignore und fügen Sie Muster zu Ihren hinzu ~/.gitignore. Diese Option gilt, wenn Sie bestimmte Muster ignorieren möchten alle Bäume. Ich benutze das für .pyc und .pyo Dateien, zum Beispiel.

Stellen Sie außerdem sicher, dass Sie Muster verwenden und Dateien nicht explizit auflisten, sofern zutreffend.

1646883491 530 Wie konfiguriere ich Git um einige Dateien lokal zu ignorieren
Piotr Korlaga

Ich denke du suchst:

git update-index --skip-worktree FILENAME

die lokale Änderungen ignorieren

Hier ist http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ Weitere Erklärung zu dieser Lösung!

Verwendung rückgängig machen:

git update-index --no-skip-worktree FILENAME

  • Es gibt eine entsprechende Diskussion zwischen --skip-worktree und --assume-unchanged bei dieser SO-Frage

    – Merwer

    9. Dezember 2015 um 14:54 Uhr

  • Wie würde ich dies rückgängig machen oder die Liste der Dateien/Muster anzeigen, die derzeit ignoriert werden über --skipworktreesollte ich später meine Meinung ändern und die Datei erneut verfolgen?

    – Anomalie

    18. Juli 2019 um 15:38 Uhr

  • wie macht man das rückgängig?

    – Benutzer1735921

    13. August 2019 um 6:32 Uhr

  • Zum Rückgängigmachen bitte verwenden git update-index --no-skip-worktree <file>

    – Benutzer1735921

    25. September 2019 um 7:59 Uhr


  • @Anomaly Um die Dateien aufzulisten, die von –skip-worktree ignoriert werden, benötigen Sie dies git ls-files -v | grep ^S

    – Ahmed Karim

    17. Juni 2020 um 2:08 Uhr

1646883492 220 Wie konfiguriere ich Git um einige Dateien lokal zu ignorieren
Brad Koch

Sie können Ihrem Home-Verzeichnis einfach eine .gitignore-Datei hinzufügen, dh $HOME/.gitignore oder ~/.gitignore. Sagen Sie dann git, diese Datei mit dem Befehl zu verwenden:

git config --global core.excludesfile ~/.gitignore

Dies ist eine normale .gitignore-Datei, auf die Git verweist, wenn entschieden wird, was ignoriert werden soll. Da es sich in Ihrem Home-Verzeichnis befindet, gilt es nur für Sie und verschmutzt keine .gitignore-Dateien des Projekts.

Ich verwende diesen Ansatz seit Jahren mit großartigen Ergebnissen.

  • Es gibt eine entsprechende Diskussion zwischen --skip-worktree und --assume-unchanged bei dieser SO-Frage

    – Merwer

    9. Dezember 2015 um 14:54 Uhr

  • Wie würde ich dies rückgängig machen oder die Liste der Dateien/Muster anzeigen, die derzeit ignoriert werden über --skipworktreesollte ich später meine Meinung ändern und die Datei erneut verfolgen?

    – Anomalie

    18. Juli 2019 um 15:38 Uhr

  • wie macht man das rückgängig?

    – Benutzer1735921

    13. August 2019 um 6:32 Uhr

  • Zum Rückgängigmachen bitte verwenden git update-index --no-skip-worktree <file>

    – Benutzer1735921

    25. September 2019 um 7:59 Uhr


  • @Anomaly Um die Dateien aufzulisten, die von –skip-worktree ignoriert werden, benötigen Sie dies git ls-files -v | grep ^S

    – Ahmed Karim

    17. Juni 2020 um 2:08 Uhr

Sie können einige installieren Git-Aliase um diesen Vorgang zu vereinfachen. Dies bearbeitet die [alias] Knoten von Ihnen .gitconfig Datei.

git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'

Die Verknüpfungen, die dies für Sie installiert, lauten wie folgt:

  • git ignore config.xml
    • git wird so tun, als würde es keine Änderungen sehen config.xml – verhindert, dass Sie diese Änderungen versehentlich übernehmen.
  • git unignore config.xml
    • git wird die Bestätigung Ihrer Änderungen an fortsetzen config.xml – damit Sie diese Änderungen erneut übernehmen können.
  • git ignored
    • git listet alle Dateien auf, die Sie auf die oben beschriebene Weise “ignorieren”.

Ich habe diese anhand von Phatmanns Antwort erstellt, die eine darstellt --assume-unchanged Version derselben.

Die Version, die ich vorstelle, verwendet --skip-worktree für das Ignorieren lokaler Änderungen. Siehe Borealids Antwort für eine vollständige Erklärung des Unterschieds, aber im Wesentlichen --skip-worktreeZweck ist für Entwickler, Dateien zu ändern, ohne das Risiko einzugehen, ihre Änderungen zu übernehmen.

Die git ignored Befehl, der hier dargestellt wird, verwendet git ls-files -vund filtert die Liste so, dass nur die Einträge angezeigt werden, die mit beginnen S Schild. Die S Tag bezeichnet eine Datei, deren Status “Arbeitsbaum überspringen” ist. Für eine vollständige Liste der Dateistatus, die von angezeigt werden git ls-files: siehe die Dokumentation für die -t Option an git ls-files.

  • Dies funktioniert nicht für nicht verfolgte Dateien :< (git 2.13.5 auf osx)

    – Terra Ashley

    4. Oktober 2017 um 20:57 Uhr


  • Ist der ‘!’ soll drin sein '!git ls-files -v | grep "^S"'? Der Befehl funktioniert bei mir nicht, wenn er dort ist … und scheint gut zu funktionieren, wenn er entfernt ist.

    – Tiris

    3. November 2017 um 12:56 Uhr

  • Das Ausrufezeichen in einem Git-Alias ​​weist Git an, eine auszuführen externer Befehleher als ein git Unterbefehl. Ich habe es eingefügt, weil ich eine Shell-Pipeline benötige, also muss ich git von außen aufrufen. Ich habe gerade versucht, das Ausrufezeichen zu entfernen (gemäß Ihrer Empfehlung), aber das tut es nicht arbeite für mich. Ich bekomme Expansion of alias 'ignored' failed; 'git' is not a git command. Das macht Sinn; ohne das Ausrufezeichen: git aliasiert Ihren Befehl auf git git ls-files ….

    – Birchlabs

    3. November 2017 um 13:07 Uhr

  • Danke für die Erklärung. Ich bin mit Git-Alias ​​nicht vertraut und habe nur eine Shell zum Testen ausgeführt, bevor ich den Alias ​​erstellt habe.

    – Tiris

    3. November 2017 um 13:41 Uhr

  • Das ist eine geniale Lösung. Da Git-Tracks pro Verzeichnis ausgeführt werden, wenn Sie den obigen Alias ​​ausführen git ignore <filename>, gilt es nur für dieses Verzeichnis. Und wenn Sie endlich Ihre Änderungen an dieser Datei vornehmen und an die Remote übertragen und übertragen möchten, verwenden Sie einfach das Handy git unignore <filename> um es vorübergehend wieder zu verfolgen! Danke!

    – Nickang

    21. September 2018 um 2:04 Uhr

985960cookie-checkWie konfiguriere ich Git, um einige Dateien lokal zu ignorieren?

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

Privacy policy