Accidentalmente empujé una twig de característica al maestro remoto. Ahora quiero revertir el maestro a la confirmación anterior. Cuando selecciono 'Revertir la bifurcación actual a esta confirmación' solo se revierte la bifurcación local, y debido a que el maestro remoto está 55 adelante (empuje accidental) no puedo empujar el maestro local recién revertido al control remoto.
Al analizar este problema en SO y Google, descubrí que muchas personas usan forzar empujar usando la línea de command. Pero dado que estoy usando Source Tree, me gustaría encontrar una forma que realmente use Source Tree.
También encontré la opción de rebase, pero parece que no puedo encontrar un tutorial paso a paso.
¿Algunas ideas?
Cuando empuja un compromiso, la forma más segura de revertirlo (en lugar de forzar el empuje con -f) es usar la function de revert
, por lo que se crea un nuevo compromiso además de su compromiso anterior.
Esto es posible con Sourcetree, haciendo clic con el button derecho en la confirmación que desea revertir y seleccionando "Invertir confirmación …".
Debería hacer esto para cada confirmación que desee revertir, en order inverso.
Sourcetree no le muestra la bandera -f
: https://answers.atlassian.com/questions/54469/how-do-i-perform-a-forced-push-push-f-from-sourcetree
Por lo tanto, la única forma de devolver el control remoto a su estado original es git revert
cada confirmación que haya introducido en el order inverso.
Suponiendo que el control remoto estuviese en la confirmación A
y usted empujó su twig de característica manteniendo confirmadas B
, C
y D
, tiene que
git revert D git revert C git revert B git push
El push funcionará bien ya que no está modificando el historial presionado, sino que impulsa un nuevo set de cambios.
Si desea acortar su serie de reversiones a una confirmación, puede hacer una
git rebase -i origin/master
y selecciona cada uno de tus commit revert
para ser squashed
. Luego, su push
solo contendrá una confirmación que revierte D
, C
y B
de una vez.
La mejor forma de hacerlo es con Reset <branch> to this commit
opción de Reset <branch> to this commit
muestra en la image a continuación.
Se le mostrará una window emergente para elegir qué modo de restablecimiento de código desea elegir. [Vea abajo]
Nota: Esto no es exactamente la reversión del código, pero elimina completamente la confirmación del control remoto y lo hace parecer más limpio.