logo

Cómo deshacer el último compromiso

Como ingeniero de software o desarrollador web, es posible que necesitemos enviar muchas confirmaciones a nuestro repositorio Git.

Sin embargo, hay otros casos en los que queremos confirmar los archivos que no se enviarán a nuestro repositorio de Git. Antes de emitir cualquier confirmación, es posible que en ocasiones deseemos implementar algunos cambios adicionales.

Como resultado, debemos deshacer la última confirmación a través de nuestro repositorio Git. Veremos cómo podemos deshacer el último compromiso en este tema.

Deshacer la última confirmación de Git junto con un reinicio

Podemos deshacer fácilmente la última confirmación de git ejecutando el comando, es decir, 'restablecer git' junto con una opción, es decir, '-suave' que protegerá todos los cambios realizados en nuestros archivos. Tenemos que describir el compromiso para deshacer que es 'HEAD~1'.

La última confirmación de git se eliminará de nuestro repositorio de Git.

 $ git reset --soft HEAD~1 

En esta notación,

'CABEZA~1': Significa que deseamos restablecer este HEAD a una única confirmación antes dentro del historial del registro.

concatenar cadenas java
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

¿Cuál será el efecto del comando anterior?

El comando, es decir, 'restablecer git' puede verse como una orden, es decir, lo opuesto a la 'git agregar' , esencialmente insertando archivos en el índice de Git.

Si se describe la opción de '-suave' , Git no cambiará los archivos dentro del índice o directorio de ejecución en absoluto.

Por ejemplo, hemos incluido dos archivos en nuestra confirmación reciente, aunque deseamos implementar algunos cambios en este archivo.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

Como resultado, aplicaremos 'restablecer git' junto con la opción de '-suave' para deshacer la última confirmación y también implementar algunos cambios adicionales.

 $ git reset --soft HEAD~1 $ git status 

Sobre el maestro de la rama

Nuestra rama es maestra/origen adelantada por la confirmación 1 (aplica 'git push' para publicar nuestras confirmaciones locales).

Modificaciones a cometer:

 (apply 'git restore --staged …' to unstage) 

nuevo archivo: archivo1

autómatas finitos no deterministas
 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Como podemos ver, el archivo aún está en el índice al deshacer la última confirmación (modificaciones a confirmar) aunque la confirmación se eliminó.

Hemos realizado con éxito la última confirmación en nuestro repositorio.

Confirmación de reinicio completo de Git

Podemos considerar en la sección anterior que podemos fácilmente deshacer la última confirmación y conservar las modificaciones hecho a cualquier archivo dentro del índice. Pero en algunas situaciones, simplemente deseamos eliminar los cambios y confirmaciones realizadas en cualquier archivo.

Es un objetivo de una opción, es decir, '-duro' .

Para deshacer la última confirmación y eliminar todas las modificaciones dentro del índice y directorio, ejecute un comando, es decir, 'restablecer git' junto con la opción, es decir, '-duro' y describir una confirmación antes del comando HEAD ('CABEZA ~ 1') .

 $ git reset --hard HEAD~1 

Cada confirmación y modificación se eliminará del índice y directorio después de usar el '--duro' dominio. Entonces debemos tener cuidado.

recuento de sql distinto

Por ejemplo, hemos enviado cualquier archivo nuevo llamado 'archivo1' a nuestro repositorio Git.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Ahora supongamos que deseamos deshacer la última confirmación y eliminar todos los cambios.

 $ git reset --hard HEAD~1 

Ahora, HEAD está en 90f8bb1 Segundo compromiso

Ahora, revisemos el estado de nuestro repositorio git.

 $ git status 

Sobre el maestro de la rama

Nuestra rama es contemporánea con master/origin (aplica el comando 'git push' para publicar nuestras confirmaciones locales).

limitaciones de la banca electrónica

Ahora no hay nada que confirmar y el árbol de trabajo está limpio.

Confirmación de Git de reinicio mixto

Mantenga la modificación dentro de nuestro directorio de trabajo, pero NO dentro del índice. Tenemos que aplicar el comando, es decir ., 'git reset' junto con la opción, es decir, '-mezclado' . Después de este comando, tenemos que agregar 'HEAD~1' simplemente a la última confirmación.

 $ git reset --mixed HEAD~1 

Por ejemplo, hemos incluido cualquier archivo llamado 'archivo1' dentro de cualquier confirmación que debamos deshacer.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Simplemente ejecutamos el comando, es decir, 'restablecer git' junto con la opción, es decir, '-mezclado' para deshacer la última confirmación.

Como resultado, el '-mezclado' comando es un 'mezcla' entre el restablecimiento completo y parcial, de ahí su nombre.

Sobre el maestro de la rama

Nuestra rama es maestra/origen adelantada por la confirmación 1 (aplica 'git push' para publicar nuestras confirmaciones locales).

Archivos sin seguimiento: (aplica 'git add...' para agregar dentro de lo que se confirmará)

 file1 

No se incluye nada para confirmar, pero los archivos sin seguimiento están presentes (aplica 'git track' para el seguimiento).

Entonces, hemos detectado otra práctica para revertir la última confirmación preservando las modificaciones realizadas en los archivos.

Deshacer la última confirmación junto con revertir

Aplicar el comando, es decir, 'git revertir' y describir un compromiso que se va a revertir, es decir, 'CABEZA' al compromiso del historial para revertir el último compromiso de Git.

 $ git revert HEAD 

El comando 'git revert' es diferente en comparación con el comando 'git reset' porque puede registrar cualquier confirmación nueva junto con algunas modificaciones definidas al degenerar la última confirmación.

Podemos describir 'HEAD~1' con el comando 'git reset' porque este comando de reinicio establecerá cualquier nuevo lugar HEAD mientras degenera la confirmación descrita.

Como resultado, volveremos a confirmar las modificaciones en algunos archivos para revertirlas y nos comprometeremos a no realizarlas. Hemos confirmado cualquier archivo nuevo para nuestro repositorio de Git pero deseamos degenerar este compromiso.

 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Si ejecuta el comando 'git revert', Git abrirá nuestro editor de texto para confirmar las modificaciones automáticamente.

Cómo deshacer el último compromiso

Se mostrará un nuevo mensaje junto con un nuevo hash de confirmación cuando terminemos de ejecutar un mensaje de confirmación.

np.media
 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Si tenemos que revisar nuestro historial de Git nuevamente, podemos notar que se agregó una nueva confirmación para deshacer la última confirmación a través de nuestro repositorio.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit