restaurar remoto recuperar hard eliminar borrado git git-reset git-commit

remoto - Cómo cancelar un git commit local



git revert head (6)

Mi problema es que he cambiado un archivo, por ejemplo: README, agregue una nueva línea '' esto para mi línea de prueba '' y guardé el archivo;

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 utilicé

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 el contenido para estar allí. ¿Hay alguna forma de retener el contenido y cancelar mi compromiso local?


Lo primero que debe hacer es justificar si desea mantener los cambios locales antes de eliminar el mensaje de confirmación.

Utilice git log para mostrar los mensajes de confirmación actuales, luego busque el commit_id antes de eliminar, no solo el que desea eliminar.

Si desea conservar los archivos modificados localmente, simplemente elimine el mensaje de confirmación:

git reset --soft commit_id

Si desea eliminar todos los archivos modificados localmente y el mensaje de confirmación:

git reset --hard commit_id

Esa es la diferencia de suave y duro.


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

--soft : Sólo se --soft confirmaciones, mientras que Index y el directorio de trabajo no se alteran.

--mixed : Esto restablecerá el índice para que coincida con la 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 : --hard todo (confirmaciones, índice, directorio de trabajo) para que coincida con la CABEZA.

En su caso, usaría git reset --soft para mantener los cambios modificados en el índice y el directorio de trabajo. Asegúrese de revisar esto para una explicación más detallada.


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

Así que puedes eliminar todas las líneas para que el mensaje de confirmación esté vacío, luego guarda el archivo:

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


Solo usa git reset sin la bandera --hard

git reset HEAD~1

PS: En los sistemas basados ​​en Unix puede usar HEAD^ que es igual a HEAD~1 . En Windows HEAD^ no funcionará porque ^ indica una continuación de línea. ¿Entonces tu línea de comandos te preguntará More? .


Use --soft lugar de --hard flag:

git reset --soft HEAD^


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

Cambios no programados después del restablecimiento: M application / config / config.php M application / config / database.php