¿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.*.logignora todos los archivos con esa extensión.#marca un comentario.!archivohace 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.
"
.gitignorees un archivo donde pongo patrones de archivos y carpetas que quiero que Git ignore, para no versionar cosas comonode_modules, archivos.envcon secretos, builds o archivos del sistema. Uso patrones comocarpeta/o*.log. Algo clave:.gitignoresolo aplica a archivos que Git todavía no rastrea; si algo ya estaba commiteado, primero tengo que sacarlo congit rm --cached."
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.