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