Mover la cabeza maestra a una twig

Tengo varias twigs de características y una twig principal. Feature2 está hecho. Normalmente me gustaría rebase (trabajando con un repository de SVN remoto y me gustaría mantener el historial, así que no hay fusión regular) y ff-merge. Pero como el maestro no ha cambiado desde que me ramifiqué, me gustaría mover la cabeza maestra (en E ) a G Usando git branch -f master G no da como resultado ningún cambio visible, asumí que esto se debe a que G está en una twig diferente.

¿Es seguro usar git update-ref -f master G aquí? ¿Debo seguir con rebase / ff-merge? Algo aún mejor?

 feature1 CD / master ABE \ feature2 FG 

Gracias.

Una combinación regular de G en master hará el truco, no es necesario volver a establecer la base:

  feature1 CD / master ABE \ feature2 FG git checkout master git merge feature2 feature1 CD / master, feature2 ABEFG 

No es necesario fusionar las twigs, basta con un reinicio. Suponiendo que el maestro está desprotegido:

 git reset --hard feature2 

No se requiere fusión, simplemente cambie el nombre de las twigs. Como no le interesan las características2 ('está hecho') ni las maestras existentes (en 'E'), solo necesita lo siguiente.

 git branch -d master git branch -m feature2 master 

¿Simple es mejor?

Recuerde que hay dos conceptos key involucrados:

  1. El Git commit graph, y
  2. Las references de Git

Cuando haces una combinación (de varios sabores e incluyendo la rebase) estás cambiando el gráfico de confirmación. Los cambios implican agregar nodos, agregar enlaces o quizás mover enlaces. Las references (incluidas las twigs y las tags) solo apuntan a confirmaciones y, por lo tanto, el cambio de una reference simplemente cambia la confirmación de apunte, no la estructura del gráfico.

Entonces, en su caso, no hay un cambio necesario en la estructura, solo un cambio de las references.

Una versión de una línea es:

 git branch -f master feature2 

que mantiene la twig feature2 alnetworkingedor (a diferencia del anterior two-liner que ejes feature2).

La actualización-ref es segura. Una cabeza de twig no es más que un pequeño "¡léame!" label colgada en una confirmación. Es puramente por convención que Git lo recoge y lo cuelga en un compromiso diferente para ti a veces.

El uso de la twig git -f maestro G no da como resultado ningún cambio visible

¿Qué dice git log --decorate --oneline --all dice? git show master ?

Puede ser mejor realizar una combinación de avance rápido de la function 2 en el maestro mediante el uso de git merge --no-ff feature2 si se ha git merge --no-ff feature2 a la twig principal. Deberías terminar con lo siguiente

 feature1 CD / master ABE-----H \ / feature2 FG