Git – Merge vs rebase

He echado un vistazo a ¿ Cuándo usas git rebase en lugar de git merge? Pero me gustaría estar seguro sobre qué solución elegir en este caso: quiero implementar una nueva característica en el Máster así que lo ramifico a una nueva twig de Función. Hago 10 commits en Feature mientras que otra persona hace otras commits en Master.

Mi pregunta es, si quiero mantener mi twig separada de la Maestra para propósitos de testing, pero necesito probarla con las nuevas confirmaciones de la Maestra integradas. Entonces, ¿debo fusionar Master en Feature (y no Feature en Master que aplicaría mis modificaciones en el master antes de mi testing) o hacer una rebase?

¿Por qué no crear una nueva twig para probar la versión fusionada? Por ejemplo:

git checkout -b test-merged-feature master git merge my-feature [... do your testing ..] 

No hay ninguna razón en particular para hacer una rebase aquí, pero si aún no has empujado tu twig de características, también estaría bien. Estas preguntas se relacionan, en parte, con la forma en que le gustaría ver su historial: a algunas personas no les gusta ver muchas fusiones; algunos lo prefieren como una forma de hacer un seguimiento de los compromisos que contribuyeron a una característica particular.

A less que ya haya empujado su twig (y sepa que otros han clonado su repository), aún así haría una rebase, como mencioné en mi propia respuesta de " git rebase vs git merge ".

Probar o no, suelo hacer una rebase cada vez que actualizo mi repo local (git fetch), para asegurarme de que la fusión final (de Feature a master ) será una de avance rápido.

Por lo tanto, no se trata solo de cómo se ve su historia, sino que se trata principalmente de asegurarse de que lo que está desarrollando no se basa en una versión anterior de master , y seguir trabajando contra las últimas evoluciones realizadas en el master través del time.

En los flujos de trabajo con los que estoy familiarizado, hay un tronco y una (s) twig (s) de integración, y twigs de características

He estado refinanciando hacia las twigs 'derivadas'. (por twigs derivadas, me refiero a la dirección TOTAL del tronco), y fusionándome con las twigs de integración.

Me gusta que siempre esté trabajando en una sucursal que tiene la misma historia que la sucursal con la que me voy a integrar. Me gusta que la fusión se convierta en un avance rápido, entonces, sé que lo que acabo de fusionar es exactamente lo mismo que lo que acabo de probar en mi sucursal.

Cuando 2 desarrolladores se comprometen con el mismo repository (esto generará un conflicto) puede fusionar los 2 commits creando un commit de fusión o puede rebasear 1 de los commits (el suyo) sobre el otro commit. siempre es mejor volver a establecer la database en lugar de generar un compromiso de fusión.