guide

Reglas de ignorar propias con .git/info/exclude

Explica cómo escribir en .git/info/exclude reglas de ignorar personales que se aplican a un solo repositorio sin modificar .gitignore, en qué situaciones conviene y cuál es su precedencia.

.gitignore se confirma y se comparte con todos. Pero a veces hay archivos que solo tú quieres ignorar en este repositorio: notas personales, scripts de prueba, carpetas que crea un plugin de tu editor. Para eso está .git/info/exclude.

Dónde está

Al hacer git init o git clone, se crea por defecto el archivo .git/info/exclude. Es un archivo vacío con solo unas pocas líneas de comentario.

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

Como está dentro del directorio .git, no se confirma y no llega a los demás aunque hagas push. La sintaxis es exactamente la misma que la de .gitignore. Si quieres saber la ubicación exacta, incluido el caso de usar varios worktrees, puedes comprobarla con git rev-parse --git-path info/exclude.

Cuándo usarlo

SituaciónEjemploUbicación recomendada
Archivos personales usados solo en este repositorionotes.md, scratch/, todo.txt.git/info/exclude
Archivos personales comunes a todos los repositorios.DS_Store, *.swpgitignore global
Reglas que necesitan todos los miembros del equiponode_modules/, dist/, .env.gitignore

Es especialmente útil al contribuir al repositorio de otros. Si modificas el .gitignore del proyecto para bloquear archivos que generan tus herramientas, puede que los revisores no quieran ese cambio. Si lo escribes en .git/info/exclude, no tocas el historial de commits.

echo 'scratch/' >> .git/info/exclude
echo '.my-plugin-cache/' >> .git/info/exclude
git status   # ya no aparecen

Precedencia

Entre las fuentes de reglas, .git/info/exclude está por debajo de .gitignore y por encima del archivo global.

  1. Patrones de la línea de comandos
  2. .gitignore (los archivos de subdirectorios sobrescriben a los superiores)
  3. .git/info/exclude
  4. core.excludesFile

Por eso no se puede recuperar con una regla ! de .git/info/exclude un archivo que .gitignore ignora. Si lo compruebas, verás lo siguiente.

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

Precauciones

Referencias

← AnteriorConfigurar un gitignore global (core.excludesFile)