guide

Eigene Ausschlussregeln mit .git/info/exclude

So schreiben Sie persönliche Ausschlussregeln, die nur für ein einzelnes Repository gelten, in .git/info/exclude, ohne die .gitignore zu ändern – mit passenden Einsatzfällen und Vorrang.

Die .gitignore wird committet und mit allen geteilt. Manchmal gibt es aber Dateien, die nur Sie in diesem Repository ignorieren möchten: persönliche Notizen, Experimentierskripte oder Ordner, die ein Plugin Ihres Editors anlegt. Dafür gibt es .git/info/exclude.

Wo liegt die Datei?

Bei git init oder git clone wird die Datei .git/info/exclude standardmäßig angelegt. Sie ist leer bis auf ein paar Kommentarzeilen.

cat .git/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# ...

Da sie im Verzeichnis .git liegt, wird sie nicht committet und auch bei einem push nicht an andere weitergegeben. Die Syntax ist exakt dieselbe wie bei .gitignore. Den genauen Speicherort – auch bei mehreren Worktrees – ermitteln Sie mit git rev-parse --git-path info/exclude.

Wann verwenden?

SituationBeispieleEmpfohlener Ort
Persönliche Dateien nur für dieses Repositorynotes.md, scratch/, todo.txt.git/info/exclude
Persönliche Dateien in allen Repositorys.DS_Store, *.swpglobale gitignore
Regeln, die alle Teammitglieder brauchennode_modules/, dist/, .env.gitignore

Besonders nützlich ist das, wenn Sie zu fremden Repositorys beitragen. Ändern Sie die .gitignore des Projekts, um Dateien Ihrer eigenen Tools auszuschließen, wollen die Reviewer diese Änderung womöglich nicht. Ein Eintrag in .git/info/exclude lässt den Commit-Verlauf unberührt.

echo 'scratch/' >> .git/info/exclude
echo '.my-plugin-cache/' >> .git/info/exclude
git status   # nicht mehr sichtbar

Vorrang

Unter den Regelquellen liegt .git/info/exclude unter .gitignore und über der globalen Datei.

  1. Muster von der Befehlszeile
  2. .gitignore (Dateien in Unterverzeichnissen überschreiben übergeordnete)
  3. .git/info/exclude
  4. core.excludesFile

Eine von .gitignore ignorierte Datei lässt sich daher nicht mit einer !-Regel in .git/info/exclude zurückholen. Eine direkte Prüfung zeigt Folgendes.

# .gitignore        : x
# .git/info/exclude : !x
$ git check-ignore -v x
.gitignore:1:x	x

Worauf zu achten ist

Quellen

← ZurückGlobale gitignore einrichten (core.excludesFile)