Cómo deshabilitar mi último commit en git

¿Cómo puedo revelar mi último commit en git?

Es

 git reset --hard HEAD 

o

 git reset --hard HEAD^ 
513
17 мая '10 в 1:26 2010-05-17 01:26 Richard se establece el 17 de mayo de 2010 a las 1:26 2010-05-17 01:26
@ 8 respuestas

Si no está seguro de lo que quiere decir con "no confirmar" y no sabe si desea utilizar git reset , consulte " Volver a la confirmación de Git anterior ".

Si está tratando de entender mejor el git reset , consulte " ¿Puede explicar qué significa el reinicio de git en inglés simple? ".


Si sabe que quiere usar git reset , aún depende de lo que quiere decir con "no comprometido". Si todo lo que quieres hacer es deshacer el acto de cometer, dejando todo lo demás intacto, usa:

 git reset --soft HEAD^ 

Si desea cancelar el acto de cometer y todo lo que haya puesto, pero deje el árbol de trabajo (sus archivos intactos):

 git reset HEAD^ 

Y si realmente desea cancelarlo por completo, descarte todos los cambios no confirmados, eliminando todos antes de la confirmación anterior (como la pregunta inicial):

 git reset --hard HEAD^ 

La pregunta original también le hizo HEAD^ no HEAD . HEAD refiere al compromiso actual, generalmente la punta de la rama seleccionada. ^ es una etiqueta que puede asociarse con cualquier especificador de confirmación y significa "confirmar para". Por lo tanto, HEAD^ es un commit antes del actual, al igual que master^ es un arreglo antes del final de la rama principal.

Aquí está la parte de la documentación de git-rev-parse que describe todas las formas de especificar confirmaciones ( ^ es solo la principal entre muchas).

838
17 мая '10 в 3:52 2010-05-17 03:52 Jefromi da la respuesta el 17 de mayo de 2010 a las 3:52 2010-05-17 03:52

Para guardar los cambios de la confirmación que desea deshacer

 git reset --soft HEAD^ 

Para deshacer los cambios de la confirmación que desea deshacer

 git reset --hard HEAD^ 

También puedes decir

border=0
 git reset --soft HEAD~2 

para devolver 2 confirmaciones.

Edición: como se mencionó en charsi, si está en Windows, deberá poner el HEAD o pasar el hash entre comillas.

 git reset --soft "HEAD^" git reset --soft "asdf" 
198
20 нояб. Respuesta dada por Alex Kinnee 20 de noviembre 2012-11-20 22:12 '12 a las 10:12 pm 2012-11-20 22:12

Este es el último.

git reset --hard HEAD^ si también desea descartar los cambios realizados. git reset --soft HEAD^ guardará los cambios en el árbol de trabajo.

82
17 мая '10 в 1:29 2010-05-17 01:29 la respuesta es dada nfm 17 de mayo, '10 a 1:29 2010-05-17 01:29

Tenga cuidado, reset --hard también eliminará sus modificaciones locales (no confirmadas).

 git reset --hard HEAD^ 

Nota: si está en Windows, deberá especificar HEAD ^ para que

 git reset --hard "HEAD^" 
38
17 мая '10 в 1:28 2010-05-17 01:28 la respuesta es dada tgeros 17 de mayo de 2010 a las 1:28 2010-05-17 01:28

Solo aviso: si está usando ZSH y ve un error

 zsh: no matches found: HEAD^ 

Necesitas evitar ^

 git reset --soft HEAD\^ 
18
12 сент. la respuesta se da dax 12 sep. 2013-09-12 15:54 '13 a las 15:54 2013-09-12 15:54

Si aún no has hecho clic en tus cambios, usa git reset --soft [Hash for one commit] para volver a un commit específico. --soft le dice a git que --soft cambios (es decir, marca los archivos como modificados). --hard le dice a git que elimine los cambios pendientes.

18
23 окт. Respuesta dada por Allen Kenney el 23 de octubre. 2014-10-23 00:07 '14 a las 0:07 2014-10-23 00:07

Si cometes la rama equivocada.

Mientras que en la rama equivocada:

  • git log -2 proporciona hashes de los últimos 2 confirmaciones, digamos $prev y $last
  • git checkout $prev corrección de validación
  • git checkout -b new-feature-branch crea una nueva rama para la función
  • git cherry-pick $last corrige la sucursal con tus cambios

Luego, puede realizar uno de los métodos sugeridos anteriormente para eliminar la confirmación de la primera rama.

11
24 янв. La respuesta se da espléndidos pensamientos el 24 de enero. 2015-01-24 04:26 '15 a las 4:26 2015-01-24 04:26

Ten cuidado con esto

Pero puedes usar el comando rebase

 git rebase -i HEAD~2 

Se abrirá una vi , y todo lo que necesita hacer es eliminar la cadena confirmada. También puede leer las instrucciones que se mostraron en la edición correcta @ vi , en este modo, puede realizar un par de acciones

1
12 авг. La respuesta la da Filipe 12 ago. 2014-08-12 17:44 '14 a las 17:44 2014-08-12 17:44

Otras preguntas sobre las etiquetas o hacer una pregunta