La característica de Git que realmente lo distingue de casi todos los otros SCM que existen es su modelo de ramificación.
La creación, fusión y eliminación de esas líneas de desarrollo toma segundos.
Esto significa que puedes hacer cosas como:
Cambio de contexto sin fricción. Crear una rama para probar una idea, comprometerse unas cuantas veces, cambiar de nuevo a donde se ramificó, aplicar un parche, cambiar de nuevo a donde se está experimentando, y fusionarlo.
Líneas de código basadas en roles. Tienen una rama que siempre contiene sólo lo que va a la producción, otra en la que se fusiona el trabajo para las pruebas, y varias más pequeñas para el trabajo diario.
Flujo de trabajo basado en características. Crea nuevas ramas para cada nueva característica en la que estés trabajando para que puedas alternar sin problemas entre ellas, y luego elimina cada rama cuando esa característica se fusione en tu línea principal.
Experimentación desechable. Crear una rama para experimentar, darse cuenta de que no va a funcionar, y simplemente eliminarla -abandonando el trabajo- sin que nadie más la vea (aunque hayas empujado otras ramas mientras tanto).
Notablemente, cuando empujas a un depósito remoto, no tienes que empujar todas tus ramas. Puedes elegir compartir sólo una de tus ramas, algunas de ellas, o todas. Esto tiende a liberar a la gente para que pruebe nuevas ideas sin preocuparse de tener que planear cómo y cuándo van a fusionarlas o compartirlas con otros.
Hay formas de lograr algo de esto con otros sistemas, pero el trabajo involucrado es mucho más difícil y propenso a errores. Git hace que este proceso sea increíblemente fácil y cambia la forma de trabajar de la mayoría de los desarrolladores cuando lo aprenden.
Pequeño y rápido
La salida es rápida. Con Git, casi todas las operaciones se realizan localmente, lo que le da una enorme ventaja de velocidad en los sistemas centralizados que tienen que comunicarse constantemente con un servidor en algún lugar.
Git fue construido para trabajar en el núcleo de Linux, lo que significa que ha tenido que manejar eficazmente grandes repositorios desde el primer día. Git está escrito en C, reduciendo la sobrecarga de los tiempos de ejecución asociados a los lenguajes de mayor nivel. La velocidad y el rendimiento han sido un objetivo principal del diseño de Git desde el principio.
Puntos de referencia
Veamos cómo se comparan las operaciones comunes con Subversion, un sistema de control de versiones común y centralizado que es similar a CVS o Perforce. Más pequeño es más rápido.
Para las pruebas, se establecieron grandes instancias de AWS en la misma zona de disponibilidad. Git y SVN se instalaron en ambas máquinas, el repositorio Ruby se copió en ambos servidores Git y SVN, y se realizaron operaciones comunes en ambos.
En algunos casos los comandos no coinciden exactamente. Aquí, se intentó hacer coincidir en el mínimo común denominador. Por ejemplo, las pruebas de «confirmación» también incluyen el tiempo para pulsar Git, aunque la mayoría de las veces no estarías pulsando en el servidor inmediatamente después de una confirmación donde los dos comandos no pueden ser separados en SVN.
Todos estos tiempos son en segundos.
Danos tu opinión