Eliminar commits no insertadas en Git

Azhar Bashir Khan 26 diciembre 2022
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:

  1. git-reset
  2. git reset

Artículo relacionado - Git Reset