Pregunta

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 envié el código a github. Ahora quiero cancelar esta confirmación.

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 LÉAME.Esto no debería suceder.Necesito que el contenido esté ahí. ¿Existe alguna forma de conservar el contenido y cancelar mi confirmación local?

¿Fue útil?

Solución

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 tu símbolo del sistema solo te preguntará More?.

Otros consejos

Usar --soft en vez de --hard bandera:

git reset --soft HEAD^

Si está en medio de un compromiso (es decir, en su editor ya), puede cancelarlo eliminando todas las líneas por encima de la primera #. Que abortarán el compromiso.

Para que pueda eliminar todas las líneas para que el mensaje de confirmación esté vacío, luego guarde el archivo:

It should look like this.

Entonces recibirás un mensaje que diga Aborting commit due to empty commit message..

EDITAR:

También puedes eliminar todos Las líneas y el resultado serán exactamente los mismos.

Para eliminar todas las líneas en VIM (si ese es su editor predeterminado), una vez que esté en el editor, escriba gg para ir a la primera línea, luego dG para eliminar todas las líneas. Finalmente, escriba y deja el archivo con wq y tu compromiso será abortado.

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

Usar git log Para mostrar los mensajes actuales de confirmación, luego encuentre el commit_id antes de El compromiso que desea eliminar, no el compromiso que desea eliminar.

Si desea mantener los archivos cambiados localmente y simplemente elimine el mensaje de confirmación:

git reset --soft commit_id

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

git reset --hard commit_id

Esa es la diferencia de suave y difícil

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

--soft: Solo se restablecerán las confirmaciones, mientras que el índice y el directorio de trabajo no están alterados.

--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: Restablece todo (compromiso, índice, directorio de trabajo) para que coincida con la cabeza.

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

Use el comando a continuación: $ Git RESET Head ~ 1 Después de esto, también puede ver los archivos lo que vuelve a la respuesta a continuación.

Cambios sin escenificar después de restablecer: M Application/config/config.php m Application/config/database.php

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top