Cómo cancelar una confirmación de git local
Mi problema es que he cambiado un archivo, por ejemplo: README, agregado una nueva línea ' esto para mi línea de prueba ' y guardado 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 envié el código a github, ahora quiero cancelar esta confirmación.
Para esto 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é ahí. ¿Hay una manera de retener el contenido y cancelar ¿mi compromiso local?
6 answers
Simplemente use git reset
sin la bandera --hard
:
git reset HEAD~1
PD: En sistemas basados en Unix se puede usar HEAD^
que es igual a HEAD~1
. En Windows HEAD^
no funcionará porque ^
indica una continuación de línea. Así que su símbolo del sistema solo le preguntará More?
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-10 18:42:23
Use --soft
en lugar de --hard
bandera:
git reset --soft HEAD^
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-10 09:24:58
Si estás en medio de un commit (es decir, en tu editor ya), puedes cancelarlo borrando todas las líneas por encima del primer #
. Eso abortará la comisión.
Así que puede eliminar todas las líneas para que el mensaje de confirmación esté vacío, luego guarde el archivo:
Entonces recibirás un mensaje que dice Aborting commit due to empty commit message.
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 19:59:37
Puedes decirle a Git qué hacer con tu índice (conjunto de archivos que se convertirán en el próximo commit) y directorio de trabajo cuando realices git reset usando uno de los parámetros:
--soft
: Solo las confirmaciones se resetearán, mientras que Index y el directorio de trabajo no se alterarán.
--mixed
: Esto restablecerá el índice para que coincida con la CABEZA, 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
: Se restablece todo (confirmaciones, índice, directorio de trabajo) para que coincida con la CABEZA.
En su caso, usaría git reset --soft
para mantener sus cambios modificados en el Índice y el directorio de trabajo. Asegúrese de revisar esto para una explicación más detallada.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-29 10:22:42
Usar el comando debajo: HEAD git reset HEAD~1 Después de esto, también puede ver los archivos que revertirán como la respuesta a continuación.
Cambios no escalonados después del restablecimiento: M application / config / config.php M aplicación / configuración / base de datos.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-14 13:25:38
Lo primero que debe hacer es justificar si desea mantener los cambios locales antes de eliminar el mensaje de confirmación.
Use git log
para mostrar los mensajes de confirmación actuales, luego busque el commit_id antes de que desee eliminar, no solo el que desea eliminar.
Si desea mantener 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-12 03:04:24