Nettoyer les référentiels Git avec la commande Git Prune

John Wachira 30 janvier 2023
  1. Utilisez la commande git prune
  2. Différence entre git prune, git fetch --prune et git remote prune
Nettoyer les référentiels Git avec la commande Git Prune

Dans cet article, nous discuterons de la commande git prune et de son objectif. Nous sommes conscients que Git est extrêmement prudent avec nos données.

Lorsque nous supprimons des données comme des commits, Git ne les perd pas facilement. Cela conduit à une accumulation de données obsolètes dans nos machines.

C’est là que la commande git prune entre en action.

Nous pouvons parler de la commande git prune comme d’un utilitaire de nettoyage dans Git que nous utilisons pour nettoyer les objets Git orphelins ou inaccessibles. Lorsque nous parlons d’objets inaccessibles, ce sont les objets de notre référentiel auxquels les références actuelles ne peuvent pas accéder.

Un bon exemple est lorsque nous revenons à un commit précédent avec la commande git reset <Commit ID>. Git stockera le commit supprimé en tant qu’objet suspendu.

Nous utilisons la commande git prune pour éliminer ces données.

Utilisez la commande git prune

La commande git prune a plusieurs options utiles comme ci-dessous.

$ git prune --dry-run

Nous exécutons la commande ci-dessus pour obtenir la sortie de la commande. Il n’exécute pas la commande prune.

$ git prune --verbose

La commande ci-dessus nous montrera toutes les actions et les objets associés.

$ git prune --progress

Nous utilisons la commande ci-dessus pour vérifier la progression du git prune.

$ git prune --expire <time>

Nous utilisons la commande ci-dessus pour supprimer les objets qui sont plus anciens que l’heure spécifiée (<time>).

Pour mieux comprendre le concept, regardons un exemple pratique. Exécutons la commande git log pour vérifier l’historique des commits dans notre référentiel local.

$ git log --oneline

Historique des commits

Utilisons la commande git reset pour revenir en arrière d’un commit, de sorte que notre HEAD soit à la Sixth Update.

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

Essayons de trouver le commit supprimé.

$ git fsck --lost-found

Pendant

Le commit supprimé est le premier ; nous pouvons confirmer avec les sept premiers caractères.

Avant d’exécuter la commande git prune, nous devons exécuter un reflog qui fera expirer les entrées antérieures à now.

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

Il est conseillé de faire un essai de la commande pour voir quels changements se produiront.

$ git prune --dry-run

marche à sec

Nous pouvons maintenant lancer la commande prune.

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

Vérifions si les commits suspendus existent toujours dans notre référentiel.

$ git fsck --lost-found

final

Différence entre git prune, git fetch --prune et git remote prune

Les commandes git fetch --prune et git remote prune ont des fonctions similaires. Nous les utilisons pour supprimer les références aux branches qui sont supprimées dans le référentiel distant.

C’est pratique lorsque vous travaillez en équipe et que vous souhaitez vous débarrasser des branches distantes qui sont supprimées après la fusion avec la branche principale.

La commande git fetch --prune est une combinaison de :

$ git fetch --all && git remote prune

Il ira chercher à partir de notre référentiel distant avant de commencer le prune. La commande de base git prune supprimera les objets locaux, comme indiqué précédemment.

Auteur: John Wachira
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

Article connexe - Git Prune