Frage Wie konfiguriere ich git, um einige Dateien lokal zu ignorieren?


Kann ich Dateien lokal ignorieren, ohne die globale Git-Konfiguration für alle anderen zu verschmutzen? Ich habe untracked Dateien, die Spam in meinem git Status sind, aber ich möchte nicht git config Änderungen für jede kleine zufällige nicht verfolgte Datei, die ich in meinen lokalen Niederlassungen habe, festschreiben.


952
2017-11-18 01:36


Ursprung


Antworten:


Von die relevante Git-Dokumentation:

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

Das .git/info/exclude Datei hat das gleiche Format wie jedes andere .gitignore Datei. Eine andere Möglichkeit ist das Einstellen core.excludesFile auf den Namen einer Datei mit globalen Mustern.

Beachten Sie, dass Sie, wenn Sie bereits nicht gesetzte Änderungen haben, nach der Bearbeitung Ihrer ignore-Muster Folgendes ausführen müssen:

git update-index --assume-unchanged [<file>...]

Hinweis zu $GIT_DIR: Dies ist eine Notation verwendet überall das git-manual einfach um den pfad zum git-repository anzugeben. Wenn die Umgebungsvariable gesetzt ist, überschreibt sie die Position des Repo, in dem Sie sich befinden, was wahrscheinlich nicht das ist, was Sie wollen.


1298
2017-11-18 01:38



Aktualisieren: Überlegen Sie zu verwenden git update-index --skip-worktree [<file>...] stattdessen danke @danShumway! Sehen Borealids Erklärung über den Unterschied der beiden Optionen.


Alte Antwort:

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


374
2018-01-22 15:39



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

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 um Änderungen an der lokalen Datei zu ignorieren, und git unignore my_file aufhören, die Änderungen zu ignorieren. git ignored listet die ignorierten Dateien auf.

Diese Antwort wurde gefunden http://gitready.com/intermediate/2009/02/18/temporary-ignoring-files.html.


128
2017-08-19 15:21



Sie haben mehrere Möglichkeiten:

  • Hinterlasse einen Dirty (oder nicht Committed) .gitignore Datei in Ihrem Arbeitsverzeichnis (oder wenden Sie es automatisch mit topgit oder ein anderes solches Patch-Tool).
  • Setzen Sie die Ausschlüsse in Ihre $GIT_DIR/info/exclude Datei, wenn dies für einen Baum spezifisch ist.
  • Lauf git config --global core.excludesfile ~/.gitignore und füge Muster hinzu ~/.gitignore. Diese Option wird angewendet, 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 ggf. keine Dateien explizit aufzählen.


89
2017-11-18 01:45



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/ mehr Erklärung über diese Lösung!


39
2017-07-11 06:38



Sie können einige installieren Git Aliase um diesen Prozess zu vereinfachen. Dies bearbeitet die [alias] Knoten deines .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 folgenden Verknüpfungen werden für Sie installiert:

  • git ignore config.xml
    • git wird so tun, als sehe es keine Änderungen config.xml - Verhindern, dass Sie diese Änderungen versehentlich vornehmen.
  • git unignore config.xml
    • git nimmt die Bestätigung Ihrer Änderungen wieder auf config.xml - Sie können diese Änderungen erneut vornehmen.
  • git ignored
    • git listet alle Dateien auf, die Sie "ignorieren", wie oben beschrieben.

Ich habe diese unter Bezugnahme auf gebaut Phatmanns Antwort - die präsentiert ein --assume-unchanged Version desselben.

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

Das git ignored Der hier vorgestellte Befehl verwendet git ls-files -vund filtert die Liste so, dass nur die Einträge angezeigt werden, die mit S Etikett. Das S tag bezeichnet eine Datei mit dem Status "worktree überspringen". Für eine vollständige Liste der Dateistatus angezeigt durch git ls-files: Siehe die Dokumentation für die -t Option auf git ls-files.


30
2017-08-22 18:27



Sie können einfach eine .gitignore-Datei zu Ihrem Home-Verzeichnis hinzufügen, d. H. $HOME/.gitignore oder ~/.gitignore. Dann sag Git, diese Datei mit dem Befehl zu verwenden:

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

Dies ist eine normale .gitignore-Datei, die Referenzen liefert, wenn sie entscheidet, was ignoriert werden soll. Da es sich in Ihrem Home-Verzeichnis befindet, gilt es nur für Sie und verschmutzt keine .gitigore-Projektdateien.

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


22
2017-10-14 12:58