1857 Stimmen

Wie kann ich Git so konfigurieren, dass es bestimmte Dateien lokal ignoriert?

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

2539voto

Josh Lee Punkte 159535

Von die entsprechende 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 sich innerhalb des Repositorys befinden, aber spezifisch für den Arbeitsablauf eines Benutzers sind), sollten in die $GIT_DIR/info/exclude archivo.

El .git/info/exclude Datei hat das gleiche Format wie jede .gitignore Datei. Eine weitere Möglichkeit ist die Einstellung core.excludesFile auf den Namen einer Datei, die globale Muster enthält.

Beachten Sie, dass Sie nach der Bearbeitung der Ignoriermuster folgende Schritte ausführen müssen, wenn Sie bereits unbearbeitete Änderungen haben:

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

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


Editar : Eine andere Möglichkeit ist die Verwendung:

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

Kehren Sie es um:

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

487voto

Florian Sesser Punkte 5772

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


Alte Antwort:

Wenn Sie lokale Änderungen an verfolgten Dateien ignorieren müssen (das ist bei lokalen Änderungen an Konfigurationsdateien der Fall), verwenden Sie git update-index --assume-unchanged [<file>...] .

209voto

phatmann Punkte 17730

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

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

Jetzt können Sie git ignore my_file um Änderungen an der lokalen Datei zu ignorieren, und git unignore my_file aufhören, die Veränderungen zu ignorieren. git ignored listet die ignorierten Dateien auf.

Diese Antwort geht aus folgenden Quellen hervor http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html .

146voto

Emil Sit Punkte 21922

Sie haben mehrere Möglichkeiten:

  • Eine schmutzige (oder ungebundene) Nachricht hinterlassen .gitignore Datei in Ihrem Arbeitsverzeichnis (oder wenden Sie sie automatisch mit topgit oder ein anderes Patch-Tool).
  • Legen Sie die Ausschlüsse in Ihrem $GIT_DIR/info/exclude Datei, wenn dies nur für einen Baum gilt.
  • Laufen lassen git config --global core.excludesfile ~/.gitignore und fügen Sie Muster zu Ihrem ~/.gitignore . Diese Option wird verwendet, wenn Sie bestimmte Muster über alle tous Bäume. Ich verwende dies für .pyc y .pyo Dateien, zum Beispiel.

Achten Sie außerdem darauf, dass Sie gegebenenfalls Muster verwenden und nicht explizit Dateien aufzählen.

106voto

Piotr Korlaga Punkte 2959

Ich glaube, Sie suchen nach:

git update-index --skip-worktree FILENAME

die lokal vorgenommene Änderungen ignorieren

Hier ist http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ mehr Erklärungen zu diesen Lösungen!

um die Verwendung rückgängig zu machen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X