Chaudhry Junaid
Tengo una situación como esta:
(master)
A - B - E - F
\
C - D
(feature-x)
¿Debo fusionar el maestro con la característica-x si necesito correcciones críticas E y F en la rama de la característica-x para continuar con el desarrollo y tengo la intención de fusionarme nuevamente con el maestro?
¿Hay alguna desventaja en fusionar repetidamente el maestro en una rama de funciones y luego la función nuevamente en el maestro cuando la rama de funciones podría o no compartirse con otros desarrolladores?
El flujo de trabajo más común para manejar esta situación probablemente sería rebase
su rama de características en la rama maestra:
$ git checkout feature-x
$ git rebase master
Esto te da:
(master)
A - B - E - F
\
C - D
(feature-x)
-
Para abordar el caso en que
feature-x
se comparte con otros desarrolladores, sin embargo, fusionándose enmaster
seria mejor.– Chepner
12 de agosto de 2015 a las 20:48
-
La elección de fusionarse
master
enfeature-x
o para rebasefeature-x
sobremaster
es subjetivo. Hay ventajas y desventajas para cada uno.– Chris – en huelga
12 de agosto de 2015 a las 20:58
-
Gracias, esto es simple y fácil de entender.
– wO_o
3 de marzo a las 8:04
-
Solo para señalar que la rebase generaría confirmaciones
C'
yD'
en vez de justoC
yD
– el rebase crearía nuevos hashes para estas confirmaciones manteniendo exactamente los mismos cambios.– rmoralesdelgado
15 de marzo a las 17:59
Según tengo entendido, fusionar el maestro en su rama de funciones no se considera una mala práctica. La respuesta de @larsks brinda buena información sobre cómo usar el cambio de base, que es una opción. Pero asegúrese de seguir la regla de oro “No rebase las confirmaciones que existen fuera de su repositorio”(ver Peligros del rebase).
Para aclarar: ‘confirmaciones que existen fuera de su repositorio’ serían confirmaciones públicas (empujadas).
Si se pregunta si cambiar la base es mejor que fusionar o viceversa, le sugiero que revise: ‘Reorganización frente a fusión’. El artículo señala que la respuesta a esto depende de lo que tú y tu equipo consideren mejor para tu proyecto.
Para proyectos más grandes, me gusta que la historia muestre exactamente lo que sucedió. Entonces, donde trabajo, generalmente fusionamos master en nuestras ramas de funciones para actualizarlas con el código más reciente. Sin embargo, no necesariamente consideraría esto como una mejor práctica global para todos. Sin embargo, tampoco se considera una mala práctica.
A otros les gusta tener un historial muy limpio, por lo que para ellos la reorganización puede considerarse la mejor opción.