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
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
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
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
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 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