Eliminar commits no insertadas en Git
Este tutorial le enseñará cómo eliminar commits no enviadas en Git.
Git se usa en un entorno de desarrollo colaborativo para realizar un seguimiento de los cambios realizados en los archivos en el directorio del proyecto. Git usa commits para realizar un seguimiento de los cambios en el repositorio local y remoto de Git.
Es posible que desee eliminar las commits no enviadas del repositorio local de Git de vez en cuando.
Elimine las commits no enviadas con el comando git reset
. Ilustraremos esto con un ejemplo.
Use el comando git reset
para eliminar commits no enviadas en Git
Siempre que queramos confirmar cambios en el directorio del proyecto, podemos confirmar los cambios usando los comandos git add
y git commit
.
Al usar el comando git commit
, se crea un commit en el repositorio local de Git. Luego podemos usar el comando git push
para enviar las commits en el repositorio local de Git al repositorio remoto de Git.
A veces, podemos darnos cuenta de que no queremos enviar las commits al repositorio remoto y simplemente nos hemos comprometido con el repositorio local. En tales casos, podemos usar el comando git reset
para anular el commit o eliminar esas últimas commits en el repositorio local de Git.
El git reset
es un comando que se utiliza para deshacer cambios locales en el estado de un repositorio de Git.
Supongamos que tenemos un cambio en el directorio de trabajo. Podemos ver el estado del cambio con el comando git status
.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: mynotes.txt
Podemos ver que el archivo mynotes.txt
está modificado y elegible para confirmación.
Para confirmar las modificaciones, primero debemos usar el comando git add
para agregar los cambios al índice de preparación del repositorio local de Git. Tenemos que ejecutar el comando git add
de la siguiente manera.
$ git add .
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: mynotes.txt
Así, al usar el comando git status
, podemos ver que los cambios ahora están escalonados.
Podemos confirmar los cambios en el repositorio local de Git. Debemos usar el comando git commit
para crear un commit para los cambios por etapas.
Ejecutamos el comando git commit
de la siguiente manera.
$ git commit -m "updated mynotes"
[main e1b08a5] updated mynotes
1 file changed, 1 insertion(+)
Ahora, ejecutamos el comando git status
nuevamente para ver el estado.
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
Ahora podemos ver que la rama local en el repositorio local está por delante de la rama remota del repositorio Git origin/main
por un commit.
Podemos usar el comando git push
para enviar el commit al repositorio remoto de Git. Pero en lugar de hacer eso, eliminamos el commit no enviada usando el comando git reset
de la siguiente manera.
$ git reset --soft HEAD~1
El comando git reset
con la opción --soft
elimina el commit no insertada del repositorio local de Git pero conserva los cambios locales. El HEAD~1
especifica el comando git reset
para eliminar solo una última confirmación.
Ahora ejecutaremos el git status
para verificar el estado del repositorio de la siguiente manera.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: mynotes.txt
Por lo tanto, podemos ver que el commit no enviada ya no está presente. Sin embargo, las modificaciones todavía están en escena.
Usar la opción --hard
en lugar de la opción de comando --soft
con el comando git reset
habría eliminado el commit reciente según lo especificado por HEAD~1
y los cambios locales realizados.
Podemos ejecutar el comando git reset
con la opción --hard
.
$ git reset --hard HEAD~1
Esto también elimina los archivos o directorios no rastreados junto con las modificaciones rastreadas. Por lo tanto, utilícelo con precaución, o podríamos perder todo el trabajo realizado.
Por lo tanto, hemos aprendido a eliminar commits no enviadas en el repositorio local de Git.
Para mayor información por favor visite:
Artículo relacionado - Git Reset
- Diferencia entre Git RM --Cached y Git Reset File
- Diferencia entre los comandos Git Reset, Revert y Checkout
- Haga que la rama de desarrollo sea idéntica a la rama principal
- Revertir una combinación de Git con conflictos
- Varios métodos utilizados para eliminar los cambios locales de Git
- Deshacer cambios en Git