Cómo cancelar un compromiso de git local

Mi problema es que he cambiado un file, por ejemplo: README, agregué una nueva línea ' esto para mi línea de testing ' y guardé el file, luego emití los siguientes commands

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 testing ' del file 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?

Simplemente use git reset sin la bandera --hard :

 git reset HEAD~1 

PD: En sistemas basados ​​en Unix, puede 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? .

Use --soft lugar de --hard :

 git reset --soft HEAD^ 

Si se encuentra en medio de una confirmación (es decir, en su editor ya), puede cancelarla eliminando todas las líneas encima del primer # . Eso abortará el compromiso.

De modo que puede eliminar todas las líneas para que el post de confirmación esté vacío y luego save el file:

Debe tener un aspecto como este.

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