Pregunta Cómo cancelar un compromiso de git local


Mi problema es que he cambiado un archivo, por ejemplo: README, agregó una nueva línea 'esto para mi línea de prueba'y guardé el archivo, luego emití los siguientes comandos

 git status

 # On branch master
 # Changed but not updated:
 #   (use "git add <file>..." to update what will be committed)
 #   (use "git checkout -- <file>..." to discard changes in working directory)
 #
 #  modified:   README
 #
 no changes added to commit (use "git add" and/or "git commit -a")


 git add README

 git commit -a -m 'To add new line to readme'

No presioné el código para github, ahora quiero cancelar este compromiso.

Para esto yo usé

   git reset --hard HEAD~1

Pero perdí la línea recién agregada 'esto para mi línea de prueba'del archivo README. Esto no debería suceder. Necesito que el contenido esté allí. ¿Hay alguna manera de retener el contenido y cancelar mi confirmación local?


503
2018-01-31 12:14


origen


Respuestas:


Solo usa git reset sin el --hard bandera:

git reset HEAD~1

PD: en sistemas basados ​​en Unix puedes usar HEAD^ que es igual a HEAD~1. En Windows HEAD^ no funcionará porque ^ señala una continuación de línea. Entonces, su símbolo del sistema simplemente le preguntará More?.


958
2018-01-31 12:17



Utilizar --soft en lugar de --hard bandera:

git reset --soft HEAD^

121
2017-08-10 08:02



Si está en el medio de una confirmación (es decir, en su editor ya), puede cancelarla eliminando todas las líneas sobre la primera #. Eso abortará el compromiso.

De modo que puede eliminar todas las líneas para que el mensaje de confirmación esté vacío y luego guardar el archivo:

It should look like this.

A continuación, recibirá un mensaje que dice: Aborting commit due to empty commit message..


21
2018-03-09 21:09



Use el siguiente comando: $ git reset HEAD ~ 1 Después de esto, también puede ver los archivos que se revierten como respuesta a continuación.

Cambios no registrados después del reinicio: M application / config / config.php M application / config / database.php


1
2018-05-14 13:25



Puede decirle a Git qué hacer con su índice (conjunto de archivos que se convertirá en la próxima confirmación) y el directorio de trabajo al realizar la restauración de git utilizando uno de los parámetros:

--soft: Solo se restablecerán los commit, mientras que Index y el directorio de trabajo no se modificarán.

--mixed: Esto restablecerá el índice para que coincida con HEAD, mientras que el directorio de trabajo no se tocará. Todos los cambios permanecerán en el directorio de trabajo y aparecerán como modificados.

--hard: Restablece todo (commits, index, working directory) para que coincida con HEAD.

En tu caso, yo usaría git reset --soft para mantener sus cambios modificados en el índice y el directorio de trabajo. Asegúrate de verificar esto afuera para una explicación más detallada.


1
2018-05-29 10:22