Limpie los repositorios de Git con el comando Git Prune

John Wachira 30 enero 2023
  1. Usa el comando git prune
  2. Diferencia entre git prune, git fetch --prune y git remote prune
Limpie los repositorios de Git con el comando Git Prune

En este artículo, discutiremos el comando git prune y el propósito al que sirve. Somos conscientes de que Git es extremadamente cuidadoso con nuestros datos.

Cuando eliminamos datos como commits, Git no los pierde fácilmente. Esto conduce a una acumulación de datos obsoletos en nuestras máquinas.

Ahí es donde entra en acción el comando git prune.

Podemos hablar del comando git prune como una utilidad de limpieza en Git que usamos para limpiar objetos huérfanos o inalcanzables de Git. Cuando hablamos de objetos inalcanzables, son los objetos en nuestro repositorio a los que las referencias presentes no pueden acceder.

Un buen ejemplo es cuando retrocedemos a un commit anterior con el comando git reset <Commit ID>. Git almacenará el commit eliminada como un objeto colgante.

Usamos el comando git prune para eliminar dichos datos.

Usa el comando git prune

El comando git prune tiene varias opciones útiles como las siguientes.

$ git prune --dry-run

Ejecutamos el comando anterior para obtener el resultado del comando. No ejecuta la prune.

$ git prune --verbose

El comando anterior nos mostrará todas las acciones y los objetos asociados.

$ git prune --progress

Usamos el comando anterior para verificar el progreso de git prune.

$ git prune --expire <time>

Usamos el comando anterior para eliminar los objetos que son más antiguos que el tiempo especificado (<time>).

Para entender mejor el concepto, veamos un ejemplo práctico. Ejecutemos el comando git log para verificar el historial de commits en nuestro repositorio local.

$ git log --oneline

Historial de commits

Usemos el comando git reset para revertir un commit, de modo que nuestro HEAD esté en la Sixth Update.

$ git reset --hard 27bd68b
HEAD is now at 27bd68b Sixth Update

Intentemos encontrar el commit eliminada.

$ git fsck --lost-found

Colgado

el commit eliminada es la primera; podemos confirmar con los primeros siete caracteres.

Antes de ejecutar el comando git prune, debemos ejecutar un reflog que hará caducar las entradas anteriores a now.

$ git reflog expire --expire=now --expire-unreachable=now --all

Es recomendable “ejecutar en seco” el comando para ver qué cambios ocurrirán.

$ git prune --dry-run

carrera en seco

Ahora podemos ejecutar el comando prune.

$ git prune --verbose --progress --expire=now

Verifiquemos si las commits pendientes todavía existen en nuestro repositorio.

$ git fsck --lost-found

final

Diferencia entre git prune, git fetch --prune y git remote prune

Los comandos git fetch --prune y git remote prune tienen funciones similares. Los usamos para eliminar las referencias a las ramas que se eliminan en el repositorio remoto.

Es útil cuando se trabaja en equipo y desea deshacerse de las ramas remotas que se eliminan después de fusionarse con la rama principal.

El comando git fetch --prune es una combinación de:

$ git fetch --all && git remote prune

Se obtendrá de nuestro repositorio remoto antes de iniciar la prune. El comando básico git prune eliminará los objetos locales, como se discutió anteriormente.

John Wachira avatar John Wachira avatar

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.

LinkedIn

Artículo relacionado - Git Prune