Pregunta Cómo comprometer mi último commit en Git [duplicado]


Esta pregunta ya tiene una respuesta aquí:

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

Lo es

git reset --hard HEAD

o

git reset --hard HEAD^

?


610
2018-05-16 22:26


origen


Respuestas:


Si no está totalmente seguro de lo que quiere decir con "no comprometer" y no sabe si quiere usar git reset, por favor mira "Revertir a un compromiso anterior de Git".

Si estás tratando de entender git reset mejor, por favor mira "¿Puedes explicar lo que hace "git reset" en inglés simple?".


Si sabes que quieres usar git reset, todavía depende de lo que quieres decir con "no comprometer". Si todo lo que quiere hacer es deshacer el acto de cometer, dejando todo lo demás intacto, use:

git reset --soft HEAD^

Si desea deshacer el acto de cometer y todo lo que había organizado, pero deje el árbol de trabajo (sus archivos intactos):

git reset HEAD^

Y si realmente quieres completamente deshacerlo, descartando todos los cambios no confirmados, restableciendo todo a la confirmación anterior (como se hizo la pregunta original):

git reset --hard HEAD^

La pregunta original también preguntó es HEAD^ no HEAD. HEAD se refiere a la confirmación actual: generalmente, la sugerencia de la rama actualmente desprotegida. los ^ es una notación que se puede adjuntar a alguna especificador de compromiso, y significa "el compromiso anterior". Asi que, HEAD^ es la confirmación antes de la actual, al igual que master^ es la confirmación antes de la punta de la rama principal.

Aquí está la porción de documentación de git-rev-parse describiendo todas las formas de especificar commits (^ es solo uno básico entre muchos).


981
2018-05-17 00:52



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

git reset --soft HEAD^

Para destruir los cambios del compromiso que quieres deshacer

git reset --hard HEAD^

También puede decir

git reset --soft HEAD~2

para volver 2 commits.

Editar: como mencionó Charsi, si estás en Windows necesitarás poner HEAD o cometer hash entre comillas.

git reset --soft "HEAD^"
git reset --soft "asdf"

231
2017-11-20 19:12



git reset --soft HEAD^ Mantendrá los cambios modificados en su árbol de trabajo.

git reset --hard HEAD^  ¡LANZARÁ LOS CAMBIOS QUE HACE!


147
2018-05-16 22:29



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

git reset --hard HEAD^

nota: si está en Windows necesitará citar HEAD ^ para

git reset --hard "HEAD^"

47
2018-05-16 22:28



Solo una nota: si estás usando ZSH y ves el error

zsh: no matches found: HEAD^

Tienes que escapar de la ^

git reset --soft HEAD\^

20
2017-09-12 12:54



Si aún no ha empujado sus cambios, use git reset --soft [Hash for one commit] revertir a una confirmación específica. --soft le dice a git que mantenga los cambios retrocedidos (es decir, marque los archivos como modificados). --hard le dice a git que borre los cambios que se están retrocediendo.


18
2017-10-22 21:07



Si te comprometes con la sucursal incorrecta

Mientras está en la rama incorrecta:

  1. git log -2 te da hashes de 2 últimos commits, digamos $prev y $last
  2. git checkout $prev checkout commit correcto
  3. git checkout -b new-feature-branch crea una nueva rama para la característica
  4. git cherry-pick $last parchea una rama con sus cambios

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


11
2018-01-24 01:26



Ten cuidado con eso

Pero puedes usar el comando rebase

git rebase -i HEAD~2

UN vi se abrirá y todo lo que tienes que hacer es eliminar la línea con la confirmación. También puede leer las instrucciones que se muestran en la edición correcta @ vi, se pueden realizar un par de cosas en este modo


1
2017-08-12 14:44