Deshacer una combinación de git (aún no se ha enviado)

Acabo de realizar algunos cambios en una de mis ramas de funciones ("feedback_tab") y luego verifiqué "master" y los fusioné allí. De hecho, quise fusionarlos en mi rama de "desarrollo".

Ahora, el maestro está por delante de 'origen / maestro' (su control remoto) en 17 confirmaciones; no he empujado la combinación hacia arriba (y no quiero, obviamente). ¿Cómo puedo revertir el maestro al mismo estado que tenía antes de la fusión accidental? Estoy confundido entre git revert y git reset con estas cosas.

Miré en mi registro de git y no hay ninguna entrada para fusionar feedback_tab en master. ¿Pensé que sería la entrada principal?

Un poco confundido: / cualquier ayuda es bienvenida! max

preguntado el 10 de mayo de 11 a las 14:05

@myself: Oh cielos, oh cielos, debería haber leído las preguntas frecuentes: "herramientas de software comúnmente utilizadas por los programadores". -

4 Respuestas

git reset --hard HEAD~17 te devuelve 17 confirmaciones por delante del jefe del maestro. git rebase -i HEAD~17 probablemente también se deshaga de las confirmaciones adicionales.

contestado el 10 de mayo de 11 a las 18:05

Es posible que desee utilizar reset --merge. Eso hace lo mismo si la fusión fue lo único que sucedió, pero si tuvo modificaciones locales (en archivos que no se vieron afectados por la fusión), los deja en su lugar en lugar de destruirlos como --hard lo hace. - Cascabel

También podría hacer git reset --hard origin/master - Karl

@Jefromi - ah, claro, tendré eso en cuenta la próxima vez. ¡Gracias! - Max Williams

@Karl: supongo que solo dice "¿hacer que la rama actual sea una copia de origen / maestro", entonces? Max Williams

@Max: Yo diría "hacer que la rama actual apunte a la misma confirmación que el origen / maestro (y arrastre el índice y el árbol de trabajo junto con él)". Pero sí, es prácticamente una copia. - Cascabel

Para deshacer una combinación que NO se presionó:

git reset --merge ORIG_HEAD

Si durante la fusión surge un conflicto, la mejor forma de deshacer la fusión es:

git merge --abort

Respondido 11 Feb 15, 01:02

gracias, esto es muy claro y al grano de la pregunta. también funciona. =) - David Lay

¡Esto me ayudó! Gracias - Prem Raj

Este patrón de git reset --merge HEAD~1 me ayudó. - Woland

Tomado de git restablecer

Undo a merge or pull

    $ git pull                         <1>
    Auto-merging nitfol
    CONFLICT (content): Merge conflict in nitfol
    Automatic merge failed; fix conflicts and then commit the result.
    $ git reset --hard                 <2>
    $ git pull . topic/branch          <3>
    Updating from 41223... to 13134...
    Fast-forward
    $ git reset --hard ORIG_HEAD       <4>

contestado el 10 de mayo de 11 a las 18:05

¡Este seguramente funcionará!

git reset --hard HEAD~1 
git init

El primero revertirá los cambios que realizó recientemente (la fusión), el segundo iniciará el repositorio al último (por lo tanto, avanzará rápidamente al último en origen)

He tratado

git reset --merge

pero no funcionó.

Respondido 27 Feb 17, 01:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.