Git cómo revertir el último comet?

Git cómo revertir el último comet?
Git es una herramienta efectiva que realiza un seguimiento de su código. Y una de las excelentes características de la herramienta es que puede verificar fácilmente su historial y volver si ha cometido un error. Creemos una situación en la que pueda revertir la última confirmación y ver cómo funciona el comando git revertir.

Vamos a comenzar agregando algunos archivos. En la última confirmación, vamos a agregar y eliminar archivos para crear una situación desordenada. Luego vamos a volver al estado antes del caos.

Puede crear una carpeta llamada /prueba y ejecutar los siguientes comandos para inicializar Git y crear la situación descrita anteriormente (estamos haciendo intencionalmente compromisos separados para crear un historial):

$ git init
Repositorio de git vacío inicializado en/usuarios/zakh_eecs/_work/aprendizaje/git_revert/test/.git/
$ echo x> file_1.TXT
$ git add -a
$ git commit -m "agregando file_1.TXT"
[Master (Root-Commit) 08CAF5D] Agregar file_1.TXT
1 archivo cambiado, 1 inserción (+)
Crear modo 100644 file_1.TXT
$ echo y> file_2.TXT
$ git add -a
$ git commit -m "agregando file_2.TXT"
[maestro BA18A2F] Agregar file_2.TXT
1 archivo cambiado, 1 inserción (+)
Crear modo 100644 file_2.TXT
$ echo z> file_3.TXT
$ git add -a
$ git commit -m "agregando file_3.TXT"
[Maestro 97F09AD] Agregar file_3.TXT
1 archivo cambiado, 1 inserción (+)
Crear modo 100644 file_3.TXT
$ echo u> file_4.TXT
$ git add -a
$ git commit -m "agregando file_4.TXT"
[Maestro 9CAF084] Agregar file_4.TXT
1 archivo cambiado, 1 inserción (+)
Crear modo 100644 file_4.TXT
$ echo v> file_5.TXT
$ git add -a
$ git commit -m "agregando file_5.TXT"
[Maestro 3F228B2] Agregar file_5.TXT
1 archivo cambiado, 1 inserción (+)
Crear modo 100644 file_5.TXT

Si revisamos nuestra carpeta, deberíamos ver la siguiente situación:

$ LS -1
file_1.TXT
file_2.TXT
file_3.TXT
file_4.TXT
file_5.TXT

Si verificamos el historial, deberíamos tener los siguientes archivos:

$ git log -enneline
3F228B2 Agregar file_5.TXT
9CAF084 Agregar file_4.TXT
97F09AD agregando file_3.TXT
BA18A2F Agregar file_2.TXT
08CAF5D Agregar file_1.TXT

Ahora creemos algunos estragos, vamos a eliminar algunos archivos y agregar un archivo malo.

$ rm file_2.TXT
$ rm file_4.TXT
$ echo w> my_bad_file.TXT
$ git add -a
$ git commit -m "agregó y eliminó archivos sin pensar en consecuencias"
[Maestro 879FBF8] agregó y eliminó archivos sin pensar en consecuencias
3 archivos cambiados, 1 inserción (+), 2 deleciones (-)
Eliminar el modo 100644 file_2.TXT
Eliminar el modo 100644 file_4.TXT
Crear modo 100644 my_bad_file.TXT

Ahora, esta es la condición de nuestra carpeta:

$ LS -1
file_1.TXT
file_3.TXT
file_5.TXT
my_bad_file.TXT

Y esta es la condición de nuestra historia:

$ git log -enneline
879FBF8 AGRADOS Y ARCHIVOS AGRETADOS sin pensar en consecuencias
3F228B2 Agregar file_5.TXT
9CAF084 Agregar file_4.TXT
97F09AD agregando file_3.TXT
BA18A2F Agregar file_2.TXT
08CAF5D Agregar file_1.TXT

Nos damos cuenta de que no queremos el último commit 879fbf8. Entonces usamos el siguiente comando revertir:

$ git revert 879fbf8

Abrirá una ventana de texto para editar el comentario automático:

Revertir "archivos agregados y eliminados sin pensar en consecuencias"
Esto vuelve a confirmar 879fbf849c4bd6fb9a377604d6355c76b92a832c.
# Ingrese el mensaje de confirmación para sus cambios. Líneas que comienzan
# con '#' será ignorado, y un mensaje vacío aborta la confirmación.
# En rama maestro
# Cambios para ser cometidos:
# Nuevo archivo: file_2.TXT
# nuevo archivo: file_4.TXT
# eliminado: my_bad_file.TXT
#

Puedes modificar el comentario. Vamos a mantenerlo como es. Tan pronto como guarde la ventana de comentarios, la tarea de revertir tendrá lugar:

$ git revert 879fbf8
[Maestro 6E80F0E] Revertir "Se agregó y eliminó archivos sin pensar en consecuencias"
3 archivos cambiados, 2 inserciones (+), 1 deleción (-)
Crear modo 100644 file_2.TXT
Crear modo 100644 file_4.TXT
Eliminar el modo 100644 my_bad_file.TXT

Veamos nuestra carpeta ahora:

$ LS -1
file_1.TXT
file_2.TXT
file_3.TXT
file_4.TXT
file_5.TXT

Nuestros archivos están de vuelta en secuencia como antes. Todas las adiciones y deleciones han sido revertidas. Vamos a ver el registro:

$ git log -enneline
6E80F0E Revertir "Añados agregados y eliminados sin pensar en consecuencias"
879FBF8 AGRADOS Y ARCHIVOS AGRETADOS sin pensar en consecuencias
3F228B2 Agregar file_5.TXT
9CAF084 Agregar file_4.TXT
97F09AD agregando file_3.TXT
BA18A2F Agregar file_2.TXT
08CAF5D Agregar file_1.TXT

Hay un nuevo commit 6E80F0E. Cualquier cambio que formara parte de 879FBF8 se deshizo y luego se cometió en 6E80F0E.

Advertencia: El comando de reinicio git le permite deshacer los compromisos también. Pero en el caso de reinicio (especialmente el reinicio duro), habría eliminado el 879FBF8 Comprometerse como si nunca hubiera sucedido y no habría habido 6E80F0E comprometerse. Con un comando revertir, todos pueden ver los cambios que han tenido lugar. En el caso de reinicio, no queda rastro. Por lo tanto, es una mala idea usar el comando de reinicio en un repositorio público porque puede causar confusión masiva. La regla de oro es: no use el reinicio en repositorios públicos, use revert, que es más seguro.

En conclusión:

El comando git revert es una forma rápida y conveniente de remediar sus errores. Es un comando que debes recordar si trabajas regularmente con git.

Estudio adicional:

  • https: // git-scm.com/docs/git-revert
  • https: // git-scm.com/docs/git-reset
  • Git: Aprenda control de versiones con Git: una guía de principiantes paso a paso paso a paso
  • Control de versiones con Git: herramientas y técnicas potentes para el desarrollo de software colaborativo
  • Pro Git, 2ª edición