Jon Purdy tiene la idea correcta. git flow
facilita 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- git
perspectiva. Considere en git
lo siguiente:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Arriba, se ramifica master
a develop
(denotado por \
) y se ramifica develop
a una feature
rama. 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, develop
ramificado de master
. El error descubierto en master
se solucionó ramificándose desde master
, arreglándolo y fusionándose nuevamente master
. Luego nos fusionamos master
con develop
, y luego develop
confeature2
, que rodaron el nuevo código desde hotfix
estas ramas.
Cuando feature2
vuelve a fusionarse develop
, su historia incluye develop
con el hotfix
. Del mismo modo, develop
se fusionó feature2
con el nuevo código de master
, por lo que la fusión develop
volverá a master
ocurrir sin problemas, ya que se basa en esa confirmación en master
ese momento, como si se hubiera bifurcado desde master
ese 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 hotfix
sucursal 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.0
en master
o fusionar master
de nuevo en 1.0
. Tome la hotfix
rama ú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 diff
es 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.3
cabeza como 1.3.17, combínela en cada característica en progreso ramificada desde 1.3
y continúe.
La git flow
extensió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.
git
etiqueta después de cada compilación exitosa? Esto tendría la ventaja adicional de que deja muy claro quégit
commits tienen problemas de compilación o fallas de prueba, ya que permanecerían sin etiquetar.