He estado desarrollando una nueva característica en una nueva rama y, además, he realizado bastantes cambios en mi rama maestra.
¿Es posible fusionar la rama maestra en mi nueva rama para mantenerla actualizada y no tener demasiados conflictos de fusión una vez que finalice la nueva característica?
Respuesta1
Tu también puedesgit merge master
ogit rebase master
.
Si la rama no se ha distribuido a otras personas, en este caso preferiríagit rebase.
Porque git rebase
hace que parezca que los cambios en la rama de características se realizaron además de los cambios en la rama maestra, lo que simplifica el gráfico de versiones.
Rebase
Tomando el ejemplo de lamanual de rebase de git, git rebase master
en sucursal feature
:
A---B---C feature A'--B'--C' feature
/ --rebase--> /
D---E---F---G master D---E---F---G master
Sin embargo, git rebase
solo es adecuado cuando nadie más está trabajando en ello, o habrá confusión y trabajo extra para ellos, porque las antiguas confirmaciones A, B, C ahora son reemplazadas por nuevas confirmaciones A', B', C', más F. y G que no estaban ahí antes.
El resultado real después git rebase master
de la rama feature
es este:
( A---B---C ) feature@{1}
/
/ A'--B'--C' feature
/ /
D---E---F---G master
Las confirmaciones A, B, C están pendientes después de la rebase, pero se puede acceder a ellas a través git reflog feature
de feature@{1}
.
Unir
Si alguien ha tirado de tu rama, o la has empujado hacia alguna parte, deberías fusionarte con ella para evitar confusión y trabajo extra en el otro extremo. VerRecuperarse de la rebase ascendente.
Este es el resultado de git merge master
en rama feature
:
A---B---C feature A---B---C---M feature
/ --merge--> / ,---’
D---E---F---G master D---E---F---G master
Alternativamente, si estás git merge feature
en una rama master
, se vería así:
A---B---C feature A---B---C feature
/ --merge--> / \
D---E---F---G master D---E---F---G---M master