Skip to content
Sintaxis6 min de lecturaVerificado Git 2.40+

Guía de sintaxis y patrones en .gitignore

Explicación detallada de las reglas de formato, comodines glob, barras iniciales y finales, negaciones y la trampa de exclusión de carpetas en Git.

1. Formato básico: Comentarios y líneas en blanco

Cada línea en un archivo .gitignore representa un patrón independiente con tres principios fundamentales:

  • Las líneas en blanco se ignoran y funcionan como separadores visuales para mantener el archivo limpio.
  • Las líneas que comienzan con # son comentarios y no tienen efecto en el control de versiones.
  • Los espacios al final de una línea se ignoran salvo que se escapen con una barra invertida (\ ).
gitignore
# Ignore compiled Python bytecode
__pycache__/
*.py[cod]

# Ignore local secret configurations
.env
.env.local

2. Comodines glob (*, ?, [ ])

Git admite los comodines tradicionales de shell en un único nivel de directorio:

  • * (Asterisco): Coincide con cero o más caracteres dentro de un mismo segmento de ruta. *.log coincide con error.log, pero no con subcarpeta/error.log.
  • ? (Signo de interrogación): Coincide exactamente con un único carácter. test?.js coincide con test1.js, pero no con test12.js.
  • [abc] (Rango de caracteres): Coincide con cualquier carácter dentro de los corchetes. *.[oa] coincide con archivos terminados en .o o .a.

3. Barras inclinadas iniciales, finales e intermedias

La posición de la barra inclinada (/) altera radicalmente la forma en que Git interpreta las reglas:

  • Barra final (logs/): Limita la regla exclusivamente a directorios. Se ignorará una carpeta llamada logs/, pero no un archivo normal llamado logs.
  • Barra inicial (/config.json): Ancla la coincidencia a la raíz donde reside el archivo .gitignore. Ignora /config.json, pero permite rastrear /subcarpeta/config.json.
  • Barra intermedia (docs/*.html): Ancla la regla de forma relativa al directorio que contiene el archivo .gitignore.

4. Doble asterisco recursivo (**)

El doble asterisco permite coincidir a través de múltiples jerarquías de directorios:

  • **/cache: Coincide con cualquier carpeta o archivo llamado cache en cualquier lugar del repositorio (cache, src/cache, a/b/c/cache).
  • logs/**: Coincide con todos los archivos y subcarpetas dentro del directorio logs/, sin importar su profundidad.
  • a/**/b: Coincide con a/b, a/x/b, a/x/y/b, etc.

5. Negación (!) y la trampa del directorio ignorado

El signo de exclamación (!) niega una regla anterior, indicando a Git que vuelva a incluir un archivo que de otro modo sería ignorado.

La trampa de directorios en Git (Por qué falla !archivo.txt)

Por motivos de rendimiento, Git omite por completo explorar una carpeta una vez que esta ha sido ignorada. Si se ignora build/, Git NUNCA volverá a incluir un archivo interno mediante !build/importante.txt.

Para incluir un archivo dentro de una carpeta ignorada, debes ignorar el contenido de la carpeta en lugar de la carpeta misma:

gitignore
# INCORRECT: Will NOT work because parent directory is skipped
node_modules/
!node_modules/my-local-package

# CORRECT: Ignore contents of directory, then whitelist the specific target
node_modules/*
!node_modules/my-local-package/

6. Depuración de reglas con git check-ignore

Para verificar con precisión qué regla de .gitignore está afectando a un archivo, usa el comando de diagnóstico de Git con el parámetro -v:

bash
# Shows the exact .gitignore file and line number responsible
git check-ignore -v src/temp/debug.log

Preguntas frecuentes

Respuestas a dudas comunes de desarrolladores sobre reglas de .gitignore, caché y gestión del repositorio.

¿Cuál es la diferencia entre * y ** en .gitignore?

Un asterisco simple (*) coincide con caracteres dentro de un único nivel de carpeta. El doble asterisco (**) coincide a través de múltiples subcarpetas anidadas.

¿Por qué no funciona !carpeta/archivo.txt si carpeta/ está ignorada?

Git no inspecciona los archivos dentro de una carpeta ignorada. Para crear una excepción, debes ignorar el contenido con 'carpeta/*' y luego definir la excepción.

¿Cómo averiguar qué regla está ignorando un archivo?

Ejecuta 'git check-ignore -v <ruta>'. Git mostrará el archivo .gitignore exacto y el número de línea que coincide.

← Leer guíasAbrir en el generador completo