remota - git push tag
¿Debo combinar el maestro en una rama y luego volver a unirlo en el maestro? (2)
Quiero saber si puedo combinar MASTER en TEST1, así que obtengo las confirmaciones de master en prueba y, una vez que termine mi función en test1, fusionar eso nuevamente con MASTER. ¿es eso posible? ¿O levantará conflictos?
Eso es exactamente cómo se hace. Puede obtener un conflicto cuando fusiona master en test1, que debe resolver manualmente. Después de eso, deberías poder combinar test1 en master sin conflictos.
Si eso es posible, ¿es posible fusionar también test2 en test1, luego fusionar test2 en master, y luego fusionar test1 en master?
Es posible, pero no recomendable. En su lugar, fusionar el maestro en test2, luego test2 de nuevo al maestro. (Lo mismo que has hecho para test1).
Después de esto todos tus cambios deberían estar en master.
¿Entenderá Git que algunas confirmaciones ya están fusionadas en la rama que se está fusionando?
Sí, a diferencia de SVN, Git es consciente de tales compromisos.
Tengo las siguientes ramas:
master
-
test1
, que fue creado desde elmaster
-
test2
, que también fue creado desde elmaster
.
He realizado múltiples confirmaciones en la rama test1
, y también, desde que creé la derivación test1
, he creado múltiples confirmaciones en el master
.
También hay confirmaciones en test2
, que tengo la intención de fusionar de nuevo en master
más tarde.
Lo que pienso ahora es que necesito mis cambios de master
y, si es posible, de test2
en test1
.
Quiero saber si puedo combinar master
en TEST1
, así que obtengo las confirmaciones de master
en test
, y después de que termine mi función en test1
, fusionar eso nuevamente con master
. ¿Es eso posible? ¿O levantará conflictos?
¿Es posible fusionar también test2
en test1
, luego fusionar test2
en master y, finalmente, fusionar test1
en master
?
¿Comprenderá Git que algunas confirmaciones ya están fusionadas en la rama que se está fusionando?
Para estar siempre al día y no generar conflictos cuando vuelva a unirse a él, puede hacer lo siguiente:
git checkout test1
git rebase master
En este punto, estará al día con el maestro y tendrá sus confirmaciones en la prueba1 por encima de él.
rebase
haría lo siguiente:
- Seleccione todas las confirmaciones en la prueba 1 después de un punto que difiera del maestro y colóquelas en un área temporal.
- Seleccione todas las confirmaciones del maestro después del punto en que difiere de la prueba1 y llévelas a la prueba1. En este punto ambas ramas están actualizadas.
- Luego recogerá las confirmaciones de prueba1 del área temporal y las aplicará encima de la prueba1. En este punto, test1 estará actualizado con el maestro y tendrá sus confirmaciones en la parte superior. Cuando suceda, se mostrará cualquier conflicto que pueda existir y usted podrá resolverlo.
Después de esto, unirte de nuevo al maestro será un avance rápido.
git checkout master
git merge test1
Lo que me gusta de este enfoque es lo siguiente:
- Es sencillo.
- Facilita mantenerse al día con las sucursales.
- Elimina las confirmaciones de mezcla, porque los conflictos se resuelven en la rebase.
He aplicado esto durante bastante tiempo y parece que se ajusta a lo que estás tratando de lograr.