es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

git — eliminar el último commit sin afectar el directorio de trabajo.

La pregunta típica es cómo eliminar el último commit. Esto es fácil:
git reset –hard HEAD~1

Pero… no quiero que el directorio de trabajo sea sobrescrito con el nuevo contenido del HEAD.

Si restableces el HEAD, el directorio de trabajo se restaura al contenido del repositorio en ese commit HEAD. Quiero mantener mis archivos modificados.

Por ejemplo, he cambiado tres archivos, pero solo quiero confirmar dos. Por accidente, confirmo los tres. Si restablezco el HEAD, no solo se elimina el commit incorrecto, sino que también se revierten todos los archivos modificados. Quiero eliminar el último commit y luego confirmar solo los dos que pretendía. Esto significa que necesito mantener los archivos modificados en el directorio de trabajo.

Creo que he explicado el problema lo suficientemente bien. O al menos eso espero.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar el último commit sin sobrescribir el directorio de trabajo, puedes seguir los siguientes pasos:

    1. Utiliza git reset --soft HEAD~1 para retroceder el puntero HEAD un commit, pero mantener los cambios en el área de preparación.
    2. Utiliza git reset HEAD ruta/hacia/archivo/no/deseado para cada archivo que no deseas commitear, a fin de removerlo del área de preparación.
    3. Utiliza git commit -c ORIG_HEAD para abrir el mensaje de commit predeterminado del commit abortado, con los cambios todavía en el área de preparación. Edita el mensaje si es necesario y luego commitea únicamente los cambios que deseas.

    Al utilizar git reset --soft HEAD~1, mantienes tanto los cambios como el estado intermedio deseado en el área de preparación, evitando la necesidad de copiar o reaplicar manualmente los cambios. Luego, al remover los cambios no deseados del área de preparación con git reset HEAD, te aseguras de que solo se incluyan en el siguiente commit los cambios que deseas. Por último, al utilizar git commit -c ORIG_HEAD, reutilizas el mensaje de commit del commit abortado y commiteas solo los cambios deseados.

Comments are closed.