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