← Git

Commits y cambios

¿Qué es `.gitignore` y para qué sirve?

Ver respuesta — intenta responderla en voz alta primero

.gitignore es un archivo donde listas los patrones de archivos y carpetas que quieres que Git ignore, es decir, que no rastree ni incluya en los commits. Sirve para dejar fuera cosas que no deben versionarse: dependencias (node_modules/), archivos de configuración local, secretos (.env), builds y archivos del sistema operativo.

No todo lo que hay en tu carpeta debe ir al repositorio. Por ejemplo, node_modules/ pesa muchísimo y se puede regenerar; un archivo .env puede tener contraseñas. .gitignore le dice a Git: "estos archivos ni los mires".

Reglas de los patrones:

  • Una línea por patrón.
  • carpeta/ ignora una carpeta completa.
  • *.log ignora todos los archivos con esa extensión.
  • # marca un comentario.
  • !archivo hace una excepción (no ignorar algo que un patrón anterior sí ignoraba).

Importante: .gitignore solo afecta a archivos untracked. Si un archivo ya está siendo rastreado por Git, agregarlo al .gitignore no lo deja de seguir; primero hay que sacarlo del seguimiento.

# Ejemplo de contenido de un archivo .gitignore:
# Dependencias
node_modules/

# Variables de entorno con secretos
.env

# Logs
*.log

# Archivos del sistema
.DS_Store

# Ignorar la carpeta build, pero NO un archivo específico dentro
build/
!build/importante.txt
# Si un archivo YA estaba rastreado, .gitignore no basta:
# hay que dejar de seguirlo (sin borrarlo del disco)
git rm --cached .env
git commit -m "Deja de rastrear .env"
# A partir de aquí, el .gitignore sí lo ignora

Agregar un archivo al .gitignore esperando que desaparezca del repo, cuando ese archivo ya estaba commiteado. .gitignore solo ignora archivos que Git aún no rastrea. Para dejar de seguir uno ya rastreado, hay que usar git rm --cached. Otro error clásico: subir node_modules/ o .env por no tener .gitignore desde el inicio.

".gitignore es un archivo donde pongo patrones de archivos y carpetas que quiero que Git ignore, para no versionar cosas como node_modules, archivos .env con secretos, builds o archivos del sistema. Uso patrones como carpeta/ o *.log. Algo clave: .gitignore solo aplica a archivos que Git todavía no rastrea; si algo ya estaba commiteado, primero tengo que sacarlo con git rm --cached."

Reto rápido

Ya habías commiteado .env por error. Ahora lo agregas al .gitignore. ¿Deja Git de rastrearlo?

Ver respuesta

No. .gitignore solo ignora archivos untracked; .env ya está siendo rastreado. Tienes que ejecutar git rm --cached .env para sacarlo del seguimiento (sin borrarlo de tu disco) y commitear ese cambio. A partir de ahí, el .gitignore sí lo ignorará. Nota: el .env seguirá visible en el historial anterior.