Git es un software de control de versiones, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones. Es un sistema de control de versiones con funcionalidad plena. Algunos proyectos de mucha relevancia usan Git.
caracteristicas de Git
- Fuerte apoyo al desarrollo no lineal, por lo tanto, rapidez en la gestión de ramas y mezclado de diferentes versiones. incluye herramientas específicas para un historial de desarrollo no lineal.
- Gestión distribuida, le da a cada programador una copia local del historial del desarrollo entero, y los cambios se propagan entre los repositorios locales.
- Los almacenes de información pueden publicarse ya sea a través de una conexión TCP/IP simple o a través de cifrado SSH. También puede emular servidores CVS.
- Los repositorios Subversion y svk se pueden usar directamente con git-svn.
- Gestión eficiente de proyectos grandes y optimización de velocidad de ejecución.
- Resulta algo más caro trabajar con ficheros concretos frente a proyectos, eso diferencia el trabajo frente a CVS, que trabaja con base en cambios de fichero, pero mejora el trabajo con afectaciones de código que concurren en operaciones similares en varios archivos.
- Los renombrados se trabajan basándose en similitudes entre ficheros, lo que evita posibles coincidencias de ficheros diferentes con un único nombre.
Una buena práctica para Git seria la siguiente:
Se deben utilizar 4 tipos de ramas: Master, Development, Features, y Hotfix.
- Master: Es la rama principal, por lo que debe estar siempre estable.
- Development: Es una rama sacada de master. Todas las nuevas funcionalidades se deben integrar en esta rama. Una vez que la rama se encuentre estable, se puede hacer un merge de development sobre la rama master.
- Features: Cada nueva funcionalidad se debe realizar en una rama nueva, específica para esa funcionalidad. Se hace un merge de la rama sobre development, donde se integrará con las demás funcionalidades.
- Hotfix: Son bugs que surgen en producción, por lo que se deben arreglar y publicar de forma urgente. Son ramas sacadas de master. Una vez corregido el error, se hace un merge de la rama sobre master. Se debe realizar el merge de master sobre development.
Ventajas
- Git te da el poder para hacer commit en cualquier, incluso cuando no estés conectado a la red. Podrás hacer uso de Git (“commit”) y tu proyecto verá reflejados los cambios de inmediato.
- Permite utilizar flujos de trabajo más flexibles que te ayudan a trabajar mejor.
- El gran rendimiento en grandes aplicaciones. Gracias a ser un sistema distribuido, cualquier búsqueda que se ejecute será muchísimo más eficaz, lo que supone una mejora en tiempos de detección de diferencias entre archivos.
- Te ayudará a manejar el código y mejorar el flujo de trabajo de manera que hará mucho más óptimo y productivo el tiempo de trabajo.