Bifurcación y fusión
La característica de Git que realmente lo distingue de casi todos los demás SCM que existen es su modelo de ramificación. Git te permite y anima a tener múltiples ramas locales que pueden ser completamente independientes entre sí. La creación, fusión y eliminación de esas líneas de desarrollo tarda unos segundos. Esto significa que puedes hacer cosas como:
Cambio de contexto sin fricciones
: Crea una rama para probar una idea, comprométete unas cuantas veces, vuelve al lugar desde el que te ramificaste, aplica un parche, vuelve al lugar donde estás experimentando y fusiona.Líneas de código basadas en roles
: Tenga una rama que siempre contenga solo lo que va a producción, otra en la que fusione el trabajo para las pruebas y varias más pequeñas para el trabajo diario.Flujo de trabajo basado en características
: Cree nuevas ramas para cada nueva función en la que esté trabajando para que pueda alternar sin problemas entre ellas, luego elimine cada rama cuando esa función se fusione con su línea principal.Experimentación desechable
: Crea una rama para experimentar, date cuenta de que no va a funcionar y simplemente elimínala, abandonando el trabajo, sin que nadie más la vea (incluso si has empujado otras ramas mientras tanto).
Distribuido
Una de las mejores características de cualquier SCM distribuido, incluido Git, es que es distribuido. Esto significa que en lugar de hacer un "checkout" de la punta actual del código fuente, se hace un "clon" de todo el repositorio.
Múltiples copias de seguridad
: Esto significa que incluso si está utilizando un flujo de trabajo centralizado, cada usuario tiene esencialmente una copia de seguridad completa del servidor principal. Cada una de estas copias podría ser empujada hacia arriba para reemplazar el servidor principal en caso de un bloqueo o corrupción. En efecto, no hay un único punto de error con Git a menos que solo haya una copia del repositorio.Cualquier flujo de trabajo
: Debido a la naturaleza distribuida de Git y al excelente sistema de ramificación, se puede implementar un número casi infinito de flujos de trabajo con relativa facilidad.