Suponiendo un gráfico de confirmación como este:
| (A) ---------> (B) ----------> (C)
| ^
| (master)
Primero desea pagar mastery crear una sucursal que apunte a donde masterse encuentra actualmente:
git checkout master
git branch pointer master
Debería verse así ahora:
| (A) ---------> (B) ----------> (C)
| ^
| (HEAD, master, pointer)
Ahora que ya estas en master , le diremos a la masterrama que retroceda una confirmación:
git reset master~1
Ahora, master debería retroceder un espacio, pero la pointerrama todavía está en la confirmación más reciente:
| (A) ---------> (B) ----------> (C)
| ^ ^
| (HEAD, master) (pointer)
En este punto, puede presionar mastera un control remoto, o donde quiera, luego avanzar rápido fusionarlo de nuevo alpointer rama. Puedes matar la pointerrama en ese punto:
git push origin master
git merge --ff-only pointer
git branch -D pointer
Final:
| (A) ---------> (B) ----------> (C)
| ^ ^
| [ origin/master ] (HEAD, master)