¿Cómo revertir la twig fusionada desde el maestro?

Estoy usando BitBucket. Ya hice una twig para masterizar y fusioné con master. Ahora necesito revertir la twig de master. ¿Cómo hacerlo?

En mi caso: tengo que revertir los últimos cinco commits y necesito volver al código anterior. ¿Cómo eliminar o revertir el commit?

Nota: Actualmente no tengo ninguna twig porque ya se fusionó con el maestro y eliminé la twig. Solo tengo una twig principal.

¿Es posible revertir la twig fusionada nuevamente?

Sería de gran ayuda saber cómo es tu historia. Voy a utilizar la historia del Dungeon Crawl como un ejemplo, y te mostraré cómo deshacer una combinación de commit:

Digamos que actualmente se ve así:

 $ git log --graph --online --decorate -n 5 * 94e1b85 (HEAD, master) Merge branch 'next' |\ | * 9312efc Don't generate Lehudib's crystal spear the unrand. | * 518382a Make Sticks to Snakes only work on missiles | * 6e8ccac Let monsters pick up Elf:$ loot * | 9ca6e02 Distinct manual tiles * | a16bb39 Restore trunk changelog entries removed by 673ecc60. * | 1d9921b Touch the 0.13 changelog header with the tentative release date. 

Encontrarás git log --oneline --graph --decorate útil aquí. --graph lo ayudará a ver las twigs y las fusiones, --oneline lo mantiene corto, y --decorate los nombres de las twigs y las tags en las confirmaciones. (Este es un command tan útil que tengo un alias para una versión ligeramente más personalizada de esto).

¿Ves que 94e1b85 compromete? Es un compromiso de fusión. Digamos que queríamos deshacerlo. Hagamos copys de security de las cosas, por si acaso:

 # Save master, just in case: $ git checkout master $ git branch old-master 

Primero, restauremos la vieja twig. Voy a llamarlo other-branch . Ya sea:

 $ git branch other-branch master^2 

Lo que significa "crear una nueva twig llamada other-branch , en el commit que es el segundo ( 2 ) padre ( ^ ) de master . También puedes simplemente nombrarlo por el hash, que puedes ver en el command git log I ' ve usado arriba.

 $ git branch other-branch 9312efc 

La historia ahora debería verse así:

 $ git log --graph --online --decorate -n 5 * 94e1b85 (HEAD, master) Merge branch 'next' |\ | * 9312efc (other-branch) Don't generate Lehudib's crystal spear the unrand. | * 518382a Make Sticks to Snakes only work on missiles | * 6e8ccac Let monsters pick up Elf:$ loot * | 9ca6e02 Distinct manual tiles * | a16bb39 Restore trunk changelog entries removed by 673ecc60. * | 1d9921b Touch the 0.13 changelog header with the tentative release date. 

Ahora, cambia donde puntos master :

 $ git checkout master $$ git reset --hard HEAD^ 

(Puede replace HEAD^ con un hash de confirmación aquí también. Hay un 1 implícito después del ^ .)

Verifica tu trabajo con:

 $ git log --oneline --graph -n 120 --decorate old-master * 94e1b85 (old-master) Merge branch 'next' |\ | * 9312efc (other-branch) Don't generate Lehudib's crystal spear the unrand. | * 518382a Make Sticks to Snakes only work on missiles | * 6e8ccac Let monsters pick up Elf:$ loot * | 9ca6e02 (HEAD, master) Distinct manual tiles * | a16bb39 Restore trunk changelog entries removed by 673ecc60. * | 1d9921b Touch the 0.13 changelog header with the tentative release date. 

Una vez que llevas las cosas al estado que deseas, para uploadlas a BitBucket, lo más probable es que necesites hacer git push --force origin master . Una palabra de advertencia: esto forzará a Master en Bitbucket a lo que sea que hayas configurado utilizando lo anterior. Además: estamos reescribiendo efectivamente la historia. Si alguien más tiene cambios basados ​​en esa combinación que hemos deshecho, vamos a causar problemas para ellos. (Tendrán que volver a establecer sus compromisos en nuestra historia recién reescrita).

Ok, entonces necesitarás hacer un empujón de fuerza para arreglar esto. No haría una reversión de la fusión, eso te dará problemas. Tenga en count que el impulso de la fuerza significará que está reescribiendo el historial, por lo que deberá informar a sus otros desarrolladores que está haciendo esto.

 1./ reset master back to the master side parent commit 2./ recover your private branch, so you don't lose your commits. 3./ force push master. 

este diagtwig con suerte lo deja en claro. enter image description here