Cómo deshabilitar mi último commit en git
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).
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

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"
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.
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^"
Solo aviso: si está usando ZSH y ve un error
zsh: no matches found: HEAD^
Necesitas evitar ^
git reset --soft HEAD\^
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.
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.
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
Otras preguntas sobre las etiquetas git git -reset deshacer git-index o hacer una pregunta