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ón | Ejemplo | Ubicación recomendada |
|---|---|---|
| Archivos personales usados solo en este repositorio | notes.md, scratch/, todo.txt | .git/info/exclude |
| Archivos personales comunes a todos los repositorios | .DS_Store, *.swp | gitignore global |
| Reglas que necesitan todos los miembros del equipo | node_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.
- Patrones de la línea de comandos
.gitignore(los archivos de subdirectorios sobrescriben a los superiores).git/info/excludecore.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
- No tiene efecto sobre archivos que ya se están rastreando. Igual que con .gitignore, las reglas de ignorar solo se aplican a archivos no rastreados.
- Al volver a clonar, este archivo vuelve a su estado predeterminado. Si necesitas las mismas reglas en varios equipos, es mejor usar el gitignore global.
- Si copias el repositorio a una carpeta compartida y se copia también el directorio
.git, las reglas se van con él.
Referencias
- Documentación oficial de gitignore: $GIT_DIR/info/exclude
- GitHub Docs: Excluding local files without creating a .gitignore file
- Fecha de verificación: 2026-09-23 (ejemplo de precedencia comprobado con git 2.50.1)