guide

Qué ignorar y qué confirmar

Resume los criterios para ignorar artefactos de compilación, dependencias, cachés y secretos y confirmar lockfiles, configuraciones de ejemplo y ajustes de editor del equipo, además de los .gitignore de subdirectorios, cómo conservar directorios vacíos y cómo combinar plantillas.

Un buen .gitignore no se juzga por su longitud, sino por su criterio. El criterio es uno solo: ¿puede alguien que acaba de clonar el repositorio obtener el mismo resultado solo con el código fuente y la configuración? Lo que se puede volver a generar se ignora; lo que no se puede volver a generar o fija el resultado se confirma.

Qué ignorar

TipoEjemploMotivo
Artefactos de compilacióndist/, build/, target/, *.o, *.classSe regeneran a partir del código fuente
Resultados de instalar dependenciasnode_modules/, vendor/(PHP), .venv/Se reinstalan con el manifiesto y el lockfile
Cachés y registros.cache/, .pytest_cache/, *.log, coverage/Cambian en cada ejecución
Entorno local y secretos.env, *.pem, local.properties, *.tfstateDifieren por persona y entorno o no deben filtrarse
Estado de herramientas personales.DS_Store, *.swp, .idea/workspace.xmlNo tienen relación con el proyecto (se recomienda el gitignore global)

Qué confirmar

Poner .gitignore en subdirectorios

.gitignore no tiene por qué estar solo en la raíz. Un .gitignore de subdirectorio funciona tomando ese directorio como base y tiene prioridad sobre el archivo superior. En un monorepo, si cada paquete necesita reglas distintas, es más legible ponerlas por separado en la carpeta de cada paquete.

repo/
├── .gitignore          # común: .DS_Store, .env, coverage/
├── apps/web/.gitignore # .next/, out/
└── services/api/.gitignore # target/

Conservar directorios vacíos

git solo rastrea archivos y no guarda directorios vacíos. Para que la carpeta exista pero su contenido se ignore, como en una carpeta de registros, pon un archivo marcador dentro y recupéralo con una regla de negación.

/log/*
!/log/.keep

Nombres como .keep o .gitkeep no son una función oficial de git, solo una convención. Cualquier nombre funciona. Otra opción es poner dentro de esa carpeta un .gitignore con el siguiente contenido, que ignora todo excepto a sí mismo.

*
!.gitignore

Al combinar plantillas

Reglas cortas y concretas

Una regla demasiado amplia como *.json se traga incluso los archivos de configuración. Acota las rutas en lo posible (/dist/) y pon barra final a los directorios para distinguirlos de archivos con el mismo nombre. Si escribes el motivo en un comentario de una línea encima de la regla, la siguiente persona podrá decidir si se puede borrar.

Referencias

← Anterior¿Por qué se ignora? Depurar con git check-ignore