Revertir una combinación de Git con conflictos

John Wachira 15 febrero 2024
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í.

combinación de git

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.

registro de git –oneline

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 Wachira avatar John Wachira avatar

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.

LinkedIn

Artículo relacionado - Git Reset

Artículo relacionado - Git Merge