Revertir una combinación de Git con conflictos
Este artículo ilustra cómo revertir el comando git merge
cuando surgen conflictos de fusión. También echaremos un vistazo rápido a cómo puede deshacer una combinación de git
que se haya realizado correctamente y se haya enviado al repositorio remoto.
Revertir una combinación de Git con conflictos
En esta sección, emplearemos un ejemplo como se discute a continuación.
Nuestro repositorio tiene las ramas master
y feature
. Editaremos el archivo README.md
en ambas ramas para que la fusión de master
en feature
resulte en conflicto.
Después de ejecutar el comando git merge
, deberíamos obtener algo así.
Para deshacer dicha combinación, podemos ejecutar el comando git merge --abort
, como se muestra a continuación.
$ git merge --abort
Este comando restablecerá nuestro repositorio a su estado anterior antes de la fusión. Debería restaurar incluso los cambios no confirmados, aunque no de forma fiable.
Además, solo los novatos fusionan ramas con cambios no confirmados.
También podemos usar el comando git reset --merge
, que hará lo mismo que el comando git merge --abort
.
$ git reset --merge
Otro comando útil es git reset --hard
. Eliminará la fusión y cualquier cambio introducido en la copia de trabajo por la fusión.
¿Qué pasa si queremos deshacer una fusión exitosa?
Primero, necesitaremos el hash de confirmación para la fusión. Podemos ejecutar el comando git log --oneline
para listar las confirmaciones en nuestro repositorio.
Luego copiaremos el hash para la confirmación de fusión, como se muestra a continuación.
Usaremos el comando git reset
con el hash de la confirmación después de nuestra confirmación de combinación. En términos más simples, la confirmación está en HEAD@{1}
.
$ git reset --hard c315395
HEAD is now at c315395 Trial2
Alternativamente, podemos ejecutar el comando git reset
, como se muestra a continuación.
$ git reset --hard HEAD~1
Esto hará retroceder nuestro repositorio por una confirmación.
En un escenario en el que habíamos empujado la fusión al repositorio remoto, ¿cómo hacemos para revertir lo mismo?
Si ya envió los cambios, debe crear una confirmación que revierta los cambios combinados y enviarlos al repositorio remoto, como se muestra a continuación.
$ git revert -m 1 08396d4
Esto revertirá los cambios introducidos por la fusión. Hemos usado el comando git revert
con el hash de confirmación de nuestra confirmación de combinación.
Ahora podemos enviar los cambios al control remoto para revertir la fusión.
En pocas palabras, Git te permite cancelar una combinación cuando surgen conflictos. Los comandos git reset --merge
y git merge --abort
son útiles en tales escenarios.
Si su fusión fue exitosa y envió los cambios al control remoto, deberá crear una nueva confirmación que revierta los cambios introducidos por la fusión.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedInArtículo relacionado - Git Reset
- Diferencia entre Git RM --Cached y Git Reset File
- Diferencia entre los comandos Git Reset, Revert y Checkout
- Haga que la rama de desarrollo sea idéntica a la rama principal
- Varios métodos utilizados para eliminar los cambios locales de Git
- Deshacer cambios en Git