Jon Purdy tiene la idea correcta. git flowfacilita también la gestión real de estas sucursales, y la gestión de sucursales es un argumento para avanzar git.
Vamos a empezar con un resumen básico de git, ya que está viniendo de la svn-a- gitperspectiva. Considere en gitlo siguiente:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Arriba, se ramifica mastera develop(denotado por \) y se ramifica developa una featurerama. Fusionamos esas ramas nuevamente (denotadas por /), con commits ( -) a lo largo de una rama. (Si no hay confirmación, pero la combinación está a la derecha, hay .indicadores que muestran que la siguiente -es la siguiente confirmación).
Suficientemente fácil. ¿Qué pasa si tenemos una revisión en nuestra versión principal?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
Arriba, developramificado de master. El error descubierto en masterse solucionó ramificándose desde master, arreglándolo y fusionándose nuevamente master. Luego nos fusionamos mastercon develop, y luego developconfeature2 , que rodaron el nuevo código desde hotfixestas ramas.
Cuando feature2vuelve a fusionarse develop, su historia incluye developcon el hotfix. Del mismo modo, developse fusionó feature2con el nuevo código de master, por lo que la fusión developvolverá a masterocurrir sin problemas, ya que se basa en esa confirmación en masterese momento, como si se hubiera bifurcado desde masterese punto.
Así que aquí hay otra forma de hacerlo.
master--..........-........-
\ /\ /
---1.0-- --1.1--
Sus publicaciones Get 1.0 tagged- 1.0.1, 1.0.2, 1.0.3, y así sucesivamente.
Ahora, aquí hay un truco: encontró un error en 1.0 y afecta a 1.1, 1.2 y 1.3. ¿Qué haces?
Bifurcas tu última versión mantenida o la anterior y la reparas. A continuación, combinar su nueva hotfixsucursal en 1.3-y en 1.2, 1.1, y 1.0. No ramifique desde cada una de las ramificaciones de la versión de mantenimiento; no fusionar 1.0en mastero fusionar masterde nuevo en 1.0. Tome la hotfixrama única y únala en todas las ramas de su versión. Si hay conflictos, te lo dirá; revise su código para asegurarse de que los cambios sean correctos ( git diffes su amigo).
Ahora ese cambio específico se aplica en todas partes. El linaje es ramificado, pero está bien. No es casual. Etiquete la 1.3cabeza como 1.3.17, combínela en cada característica en progreso ramificada desde 1.3y continúe.
La git flowextensión ayuda a administrar estas ramas de mantenimiento, características y revisiones por usted. Una vez que baja el flujo de trabajo, esto es trivial y elimina una gran cantidad de problemas de la administración del código fuente.
He visto esto en equipos de programación, pero yo no he trabajado tan profundamente como programador, así que todavía estoy entendiendo el flujo de trabajo diario.
gitetiqueta después de cada compilación exitosa? Esto tendría la ventaja adicional de que deja muy claro quégitcommits tienen problemas de compilación o fallas de prueba, ya que permanecerían sin etiquetar.