GIT Guía Completa en Español – Buenas Prácticas con GIT

Los mensajes de commit son una parte crucial de tu historial de GIT, actuando como una narrativa de la evolución de tu proyecto.

Joshua González

Estimated reading time: 7 minute(s)
October 23, 2024

Mensajes de commit descriptivos

Los mensajes de commit son una parte crucial de tu historial de GIT, actuando como una narrativa de la evolución de tu proyecto. Un buen mensaje de commit no solo describe qué cambios se hicieron, sino también por qué se hicieron, proporcionando contexto valioso para ti y para otros desarrolladores en el futuro.

¿Por qué son importantes los mensajes de commit descriptivos?

  • Comprensión del historial: Facilitan la comprensión de los cambios realizados en el proyecto, permitiendo a otros desarrolladores (¡e incluso a ti mismo en el futuro!) entender el razonamiento detrás de cada decisión.
  • Colaboración efectiva: Ayudan a los miembros del equipo a mantenerse al tanto de los cambios y a comprender el contexto de las contribuciones de cada uno.
  • Depuración y resolución de problemas: Permiten rastrear la introducción de errores o problemas al identificar los commits que podrían haberlos causado.
  • Generación de documentación: Pueden utilizarse para generar automáticamente registros de cambios (changelogs) y otra documentación del proyecto.

Características de un buen mensaje de commit:

  • Conciso y claro: Describe los cambios de manera breve y directa, utilizando un lenguaje sencillo y comprensible.
  • Verbo en presente e imperativo: Utiliza el presente del indicativo en forma imperativa para describir la acción realizada (por ejemplo, “Agrega”, “Corrige”, “Mejora”).
  • Énfasis en el cambio: Céntrate en lo que se ha cambiado, no en cómo se ha hecho. Evita detalles técnicos innecesarios en el mensaje principal.
  • Contexto y motivación: Explica brevemente por qué se realizó el cambio, qué problema resuelve o qué funcionalidad añade. Puedes incluir más detalles en el cuerpo del commit si es necesario.
  • Referencias a issues o tareas: Si estás trabajando con un sistema de seguimiento de tareas o issues, incluye referencias en el mensaje del commit para facilitar la trazabilidad.

Ejemplos de buenos mensajes de commit:

  • Bueno: “Agrega validación de formulario de contacto”
  • Malo: “Cambios en el archivo formulario.php”
  • Bueno: “Corrige error de cálculo en la función calcular_impuestos”
  • Malo: “Arreglé un bug”
  • Bueno: “Mejora el rendimiento de la consulta de base de datos utilizando índices”
  • Malo: “Optimización de código”
  • Bueno: “Implementa nueva funcionalidad de búsqueda (refs #123)”
  • Malo: “Commit de nueva funcionalidad”

Consejos adicionales:

  • Limita la longitud de la primera línea: La primera línea del mensaje de commit debería ser breve (idealmente menos de 50 caracteres) para que sea fácil de leer en la salida de git log.
  • Utiliza el cuerpo del commit para detalles: Si necesitas proporcionar más contexto o explicaciones, utiliza el cuerpo del commit para añadir detalles adicionales. Deja una línea en blanco después de la primera línea para separar el resumen del cuerpo.
  • Convenciones de estilo: Considera adoptar una convención de estilo para los mensajes de commit, como Conventional Commits o cualquier otra que se adapte a tu equipo.
  • Revisa tus mensajes antes de hacer commit: Tómate un momento para revisar tus mensajes de commit antes de finalizarlos. Un pequeño esfuerzo adicional puede marcar una gran diferencia en la claridad y utilidad de tu historial de GIT.

Flujos de trabajo (Workflows) comunes

Los flujos de trabajo en GIT definen cómo los equipos de desarrollo colaboran y gestionan los cambios en un proyecto. A continuación, describimos algunos de los flujos de trabajo más comunes y sus características principales:

  1. Flujo de Trabajo Centralizado
    • Estructura: Un repositorio central actúa como la única fuente de verdad. Los desarrolladores clonan el repositorio, trabajan en sus copias locales y envían sus cambios (push) directamente a la rama principal (master o main).
    • Ventajas: Simple y fácil de entender, ideal para equipos pequeños o proyectos simples.
    • Desventajas: Puede generar conflictos frecuentes si varios desarrolladores trabajan en la misma parte del código al mismo tiempo.
  2. Flujo de Trabajo con Ramas de Funcionalidades (Feature Branch Workflow)
    • Estructura: Cada nueva funcionalidad o corrección de errores se desarrolla en una rama separada (feature/* o fix/*). Una vez completada y revisada, la rama se fusiona (merge) en la rama principal.
    • Ventajas: Permite el desarrollo en paralelo, facilita la revisión de código y mantiene la rama principal limpia y estable.
    • Desventajas: Puede generar un historial de commits complejo si hay muchas ramas y fusiones frecuentes.
  3. Flujo de Trabajo de Gitflow
    • Estructura: Define un conjunto de ramas con roles específicos: master o main (versiones de lanzamiento), develop (desarrollo en curso), feature/* (nuevas funcionalidades), release/* (preparación de lanzamientos), hotfix/* (correcciones urgentes).
    • Ventajas: Proporciona una estructura clara para proyectos grandes y complejos con múltiples lanzamientos y versiones.
    • Desventajas: Puede ser complejo de entender y gestionar, especialmente para equipos pequeños o proyectos simples.
  4. Flujo de Trabajo de Forking
    • Estructura: Cada desarrollador tiene su propio fork (copia) del repositorio principal. Los cambios se desarrollan en ramas dentro del fork y luego se proponen al repositorio principal a través de Pull Requests.
    • Ventajas: Ideal para proyectos de código abierto, permite contribuciones externas sin dar acceso directo al repositorio principal.
    • Desventajas: Puede requerir más pasos y coordinación para integrar cambios en el repositorio principal.

Elección del Flujo de Trabajo Adecuado:

La elección del flujo de trabajo depende del tamaño del proyecto, la complejidad del equipo y las preferencias de desarrollo. Considera los siguientes factores:

  • Tamaño del equipo: Flujos de trabajo más simples pueden ser suficientes para equipos pequeños, mientras que equipos grandes pueden beneficiarse de estructuras más formales como Gitflow.
  • Complejidad del proyecto: Proyectos grandes y complejos con múltiples lanzamientos y versiones pueden requerir un flujo de trabajo más estructurado como Gitflow.
  • Colaboración externa: Si esperas contribuciones de desarrolladores externos, el flujo de trabajo de Forking puede ser la mejor opción.
  • Cultura del equipo: Adapta el flujo de trabajo a las preferencias y la forma de trabajar de tu equipo.

Uso de .gitignore para excluir archivos

El archivo .gitignore es un componente esencial para mantener tu repositorio GIT limpio y organizado. Te permite especificar qué archivos o carpetas deseas excluir del control de versiones, evitando que GIT los rastree y los incluya en tus commits. Esto es especialmente útil para ignorar archivos temporales, archivos de configuración específicos del entorno, archivos generados automáticamente y otros archivos que no son parte del código fuente de tu proyecto.

¿Por qué usar .gitignore?

  • Evitar commits innecesarios: Previene que archivos irrelevantes o temporales se incluyan en tus commits, manteniendo el historial de tu repositorio limpio y enfocado en los cambios importantes del código.
  • Proteger información sensible: Permite excluir archivos de configuración que contienen contraseñas, claves de API u otra información confidencial que no debe ser compartida públicamente.
  • Mejorar la colaboración: Evita conflictos y confusiones al excluir archivos que son específicos del entorno de desarrollo de cada miembro del equipo.
  • Optimizar el tamaño del repositorio: Excluye archivos grandes o generados automáticamente que no son necesarios para la construcción o ejecución del proyecto, reduciendo el tamaño del repositorio y acelerando las operaciones de GIT.

Cómo crear y usar .gitignore:

  • Crea el archivo: En la raíz de tu repositorio, crea un archivo de texto llamado .gitignore (asegúrate de incluir el punto al principio).
  • Añade patrones de exclusión: Dentro del archivo .gitignore, escribe los patrones de archivos o carpetas que deseas excluir, uno por línea. Puedes usar comodines (*) y otros caracteres especiales para crear patrones más flexibles.
  • Guarda el archivo: Guarda los cambios en el archivo .gitignore.
  • Haz commit del archivo: Utiliza git add .gitignore y git commit -m "Agrega .gitignore" para incluir el archivo en tu repositorio.

Ejemplos de patrones de exclusión:

  • *.log: Ignora todos los archivos con extensión .log.
  • node_modules/: Ignora la carpeta node_modules y todo su contenido.
  • temp/*: Ignora todos los archivos dentro de la carpeta temp.
  • config.local.php: Ignora un archivo específico llamado config.local.php.
  • !config.example.php: No ignora el archivo config.example.php, incluso si coincide con otros patrones de exclusión.

Consejos:

  • Comodines: Utiliza comodines (*) para crear patrones más generales. Por ejemplo, *.tmp ignorará todos los archivos temporales con cualquier nombre pero con la extensión .tmp.
  • Negación: Utiliza ! al principio de un patrón para incluir un archivo o carpeta que de otro modo sería excluido.
  • Comentarios: Utiliza # al principio de una línea para añadir comentarios explicativos a tu archivo .gitignore.
  • Plantillas: Puedes encontrar plantillas de .gitignore para diferentes lenguajes de programación y frameworks en línea, lo que te ahorrará tiempo y esfuerzo al crear tu propio archivo.

Share this post: LinkedIn LinkedIn Logo Facebook Facebook Logo

About Aviada

With Aviada’s expertise in staff augmentation, hiring professionals in Mexico has never been easier.
By providing us with a job description, you can harness the benefits of Employer Of Record Services and trust Aviada to locate the ideal candidate to meet your needs, seamlessly taking care of the entire process.

Aviada ranked #1 in Best Place to Code 2021

Best Place to Code® is a program to identify and award companies that make efforts to offer the best work conditions to IT Professionals. This award is operated by Software Guru.
BPTC Logo