Deshacer la última confirmación de Git en un repositorio local
Este artículo discutirá cómo podemos deshacer la última confirmación en Git. Esto es útil cuando queremos eliminar los cambios introducidos por un commit antes de enviarla al repositorio remoto.
Saltemos directamente.
Deshacer la última confirmación sin modificar archivos en Git
Comenzaremos discutiendo cómo podemos deshacer un commit mientras se realizan las modificaciones anteriores en los archivos. Para hacer esto, usamos el comando git reset
con el argumento -soft
para indicarle a Git que conserve el contenido de nuestro archivo.
$ git reset --soft HEAD~1
El comando anterior eliminará la última confirmación en nuestro HEAD
.
Veamos un ejemplo. Aquí está el historial de commits en nuestro repositorio local.
$ git log --oneline --graph
* c5bf6c8 (HEAD -> master) Added a new file named "file.txt"
* 3b641e0 Second commit
* 21ca1e7 Initial commit
Ejecutemos el comando git reset
y verifiquemos su impacto en nuestro repositorio local.
El resultado anterior muestra que nuestro file.txt
está en nuestro índice, pero el commit no está presente. Podemos hacer modificaciones al archivo y confirmarlo nuevamente.
$ git log --oneline --graph
* c5bf6c8 (HEAD -> master) (HEAD)
* 3b641e0 Second commit (HEAD~1)
* 21ca1e7 Initial commit (HEAD~2)
Nuestro comando $ git reset --soft HEAD~1
elimina la última confirmación. Si tuviéramos que eliminar las dos últimas commits, en su lugar habríamos usado $ git reset --soft HEAD~2
y así sucesivamente.
A veces, es posible que queramos eliminar el compromiso y los archivos. Usamos el comando git reset
con la opción -hard
, como se muestra a continuación.
$ git reset --hard HEAD~1
El comando anterior eliminará todas las modificaciones asociadas con el commit de nuestro índice y directorio de trabajo.
Veamos un ejemplo. Aquí hay una imagen de nuestro historial de commits.
$ git log --oneline --graph
* c5bf6c8 (HEAD -> master) Added a new file named "file.txt"
* 3b641e0 Second commit
* 21ca1e7 Initial commit
En este escenario, nos gustaría eliminar la última confirmación y eliminar las modificaciones.
Corremos:
$ git reset --hard HEAD~1
HEAD is now at 3b641e0 Second commit
Ejecutemos el comando git status
para comprobar el estado de nuestro repositorio.
El resultado anterior muestra que Git eliminó los archivos de nuestro índice y directorio de trabajo.
También es posible que debamos deshacer la última confirmación y conservar los cambios en el directorio de trabajo, pero en nuestro índice. Para hacer esto, agregamos la opción --mixed
a nuestro comando git reset
, como se muestra a continuación.
$ git reset --mixed HEAD~1
Veamos un ejemplo. Este es el estado actual de nuestro historial de commits.
$ git log --oneline --graph
* c5bf6c8 (HEAD -> master) Added a new file named "file.txt"
* 3b641e0 Second commit
* 21ca1e7 Initial commit
Corremos:
$ git reset --mixed HEAD~1
Nuestros archivos deben estar visibles en el directorio de trabajo pero ausentes en el índice. Confirmemos esto con el comando git status
.
Podemos ver que nuestro archivo.txt
está debajo de archivos sin seguimiento. Esta es otra forma de deshacer un commit mientras se conservan las modificaciones.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedInArtículo relacionado - Git Commit
- Agregar todos los archivos para confirmar excepto un archivo
- Agregar un archivo a la última confirmación en Git
- Cierra el editor de Git Commit en Windows
- Combinar selectivamente los cambios de diferentes ramas en Git
- Comprender la función de aprobación de Git Commit
- Confirmaciones de la lista de Git