Pregunta Cómo deshacer una combinación de git con conflictos


Estoy en una sucursal mybranch1. mybranch2 se bifurca de mybranch1 y se hicieron cambios en mybranch2.

Entonces, mientras está encendido mybranch1, He hecho git merge --no-commit mybranch2 Muestra que hubo conflictos durante la fusión.

Ahora quiero descartar todo (el merge comando) para que mybranch1 está de vuelta a lo que era antes. No tengo idea de cómo hago esto.


628
2018-04-21 08:20


origen


Respuestas:


Último Git:

git merge --abort

Esto intenta restablecer su copia de trabajo al estado en el que se encontraba antes de la fusión. Eso significa que debe restaurar cualquier cambio no confirmado antes de la fusión, aunque no siempre puede hacerlo de manera confiable. En general, no debe fusionarse con cambios no confirmados de todos modos.

Antes de la versión 1.7.4:

git reset --merge

Esta es una sintaxis anterior pero hace lo mismo que la anterior.

Antes de la versión 1.6.2:

git reset --hard

que elimina todos los cambios no confirmados, incluida la combinación no comprometida. A veces, este comportamiento es útil incluso en las versiones más nuevas de Git que admiten los comandos anteriores.


1104
2018-04-21 08:23



Asumiendo que estás usando el último git,

git merge --abort

94
2018-04-21 08:23



En realidad, vale la pena notar que git merge --abort es solo equivalente a git reset --merge Dado que MERGE_HEAD está presente. Esto se puede leer en la ayuda de git para el comando de fusión.

git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

Después de una fusión fallida, cuando no hay MERGE_HEAD, la fusión fallida se puede deshacer con git reset --merge pero no necesariamente con git merge --abort, así que no son solo una sintaxis vieja y nueva para la misma cosa.

Personalmente encuentro git reset --merge mucho más útil en el trabajo diario.


82
2018-06-09 06:45