Buenas prácticas

Qué conviene ignorar

Hay varios tipos de archivos que normalmente conviene ignorar en un repositorio de Git mediante un archivo .gitignore. Ignorarlos mantiene limpio tu repositorio y evita que archivos innecesarios acaben incluidos en commits.

Artefactos de build. No incluyas artefactos de build en tu repositorio: se pueden regenerar a partir del código fuente y solo hinchan el repo. También pueden cambiar ligeramente cada vez (por ejemplo, marcas de tiempo), lo que ensucia el control de versiones.

Posibles excepciones:
  1. Si los artefactos son entregables finales (por ejemplo, archivos estáticos de un sitio web para desplegarlo).
  2. Si resulta útil ver cambios en archivos generados entre versiones.
  3. Si el proceso de build es lento o consume muchos recursos, guardarlos en el repositorio puede ahorrar tiempo.

Dependencias del proyecto. No incluyas dependencias en el repositorio: pueden instalarse con un gestor de paquetes y solo hinchan el repo. Además, sus actualizaciones frecuentes ensucian el control de versiones. En su lugar, incluye archivos de bloqueo (lock files) o manifiestos para registrar las versiones exactas.

Posibles excepciones:
  1. Guardar las dependencias en el repositorio puede acelerar los builds, porque no hay que descargarlas cada vez. Esto puede importar si tu proyecto ejecuta pruebas automáticas.
  2. Guardar las dependencias en el repositorio garantiza que el proyecto se construya con versiones exactas y ayuda a prevenir ataques a la cadena de suministro. Piensa en un hacker de Corea del Norte que compromete el registro global de paquetes y tú instalas sin saberlo el paquete infectado. Es una historia real que ya ha pasado varias veces.

Claves de API y otros secretos. Puede que tengas un archivo de configuración con claves de API, contraseñas u otros secretos. No te interesa incluir estos archivos en el repositorio, porque contienen información sensible. Además, quizá quieras usar claves distintas en cada entorno (desarrollo, pruebas, producción).

Logs y archivos temporales. Tu proyecto puede generar archivos de log, archivos temporales u otros archivos que no forman parte del código fuente. Estos archivos no aportan nada al proyecto, y no te interesa incluirlos en el repositorio.

Archivos binarios grandes. Los archivos grandes (por ejemplo, imágenes, vídeos o archivos comprimidos) de más de 100 MB no encajan bien en el control de versiones. Git no está diseñado para manejarlos de forma eficiente, y pueden ralentizar tu repositorio. Usa Git LFS u otras herramientas para gestionar archivos grandes. Puedes incluir archivos grandes en commits, pero a la larga solo hará que todo vaya más lento.

Archivos de IDE y editores. Los editores modernos y los IDE crean directorios ocultos con sus ajustes y archivos de caché. Por lo general, estos archivos no son útiles para el proyecto, porque contienen tus propias preferencias y ajustes. Aun así, quizá quieras incluirlos en el repositorio si tu equipo quiere compartir la misma configuración.

Archivos del sistema. En macOS, el sistema operativo puede crear de vez en cuando archivos de servicio llamados .DS_Store en el directorio del proyecto. Normalmente están ocultos en el Finder, pero se ven desde la terminal. Estos archivos no son útiles para el proyecto, y no te interesa incluirlos en el repositorio.