Me he encontrado con un conflicto de fusión. ¿Cómo puedo abortar la fusión?
Usé git pull
y tuve un conflicto de fusión:
unmerged: _widget.html.erb
You are in the middle of a conflicted merge.
Sé que la otra versión del archivo es buena y que la mía es mala por lo que todos mis cambios deben ser abandonados. ¿Cómo puedo hacer esto?
2374
3
Como tu
pull
no tuvo éxito, entoncesHEAD
(noHEAD^
) es el último commit "válido" en tu rama:La otra parte que quieres es dejar que sus cambios anulen los tuyos.
Las versiones más antiguas de git te permitían utilizar la estrategia de fusión "de ellos":
Pero esto ha sido eliminado, como se explica en este mensaje de Junio Hamano (el mantenedor de Git). Como se indica en el enlace, en su lugar se haría esto:
Creo que lo que necesitas es
git reset
.Ten en cuenta que
git revert
significa algo muy diferente a, por ejemplo,svn revert
- en Subversion el revert descartará tus cambios (no comprometidos), devolviendo el archivo a la versión actual del repositorio, mientras quegit revert
"deshace" un commit.El comando
git reset
debería hacer el equivalente asvn revert
, es decir, descartar los cambios no deseados.En este caso concreto, no se quiere abortar la fusión, sino resolver el conflicto de una manera determinada.
Tampoco es necesario reiniciar y realizar una fusión con una estrategia diferente. Los conflictos han sido señalados correctamente por git y el requisito de aceptar los cambios de la otra parte es sólo para este archivo.
Para un archivo no fusionado en un conflicto, git pone a disposición la base común, las versiones locales y remotas del archivo en el índice. (Aquí es donde se leen para su uso en una herramienta de diferencias a tres bandas por
git mergetool
). Puedes usargit show
para verlas.La forma más sencilla de resolver el conflicto para usar la versión remota textualmente es:
O, con git >= 1.6.1: