26 points par GN⁺ 2026-02-21 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Une commande simple pour résoudre l’ancien problème de nettoyage des branches Git a été retrouvée dans une documentation interne de développement de la CIA
    git branch --merged | grep -v "\*\|master" | xargs -n 1 git branch -d
  • La commande supprime en lot les branches fusionnées en excluant la branche actuelle et master des résultats de git branch --merged
  • Il existe aussi une version adaptée aux projets modernes, qui exclut les branches main et develop
  • On peut l’enregistrer comme alias Git pour automatiser une tâche répétitive ; c’est un outil simple mais utile pour améliorer durablement l’efficacité et garder un dépôt bien rangé

Une astuce Git découverte dans Vault7

  • Les documents Vault7 publiés par WikiLeaks en 2017 contenaient des outils de piratage de la CIA ainsi que de la documentation interne de développement
    • L’une des pages proposait une collection d’astuces et de tricks Git, dont la plupart relevaient d’usages classiques comme la modification de commits, le stash ou bisect
  • La commande en une ligne trouvée dans ce document est restée dans mon ~/.zshrc jusqu’à aujourd’hui

Le vieux problème du nettoyage des branches

  • Dans un dépôt Git local, les branches fusionnées s’accumulent avec le temps et deviennent difficiles à gérer
    • Branches de fonctionnalité, hotfixes ou branches d’expérimentation restent souvent après fusion, ce qui encombre la sortie de git branch
  • La commande git branch --merged permet d’identifier les branches fusionnées, mais leur suppression manuelle est fastidieuse

La commande d’origine du document de la CIA

  • La commande d’origine proposée était la suivante
    git branch --merged | grep -v "\*\|master" | xargs -n 1 git branch -d  
    
  • Explication des composants
    • git branch --merged : affiche la liste de toutes les branches locales fusionnées dans la branche actuelle
    • grep -v "\*\|master" : exclut la branche actuelle (*) et master
    • xargs -n 1 git branch -d : supprime en toute sécurité les branches restantes une par une (-d ne supprime pas les branches non fusionnées)

Version modernisée de la commande

  • Comme la plupart des projets utilisent désormais la branche main, on peut modifier la commande comme suit
    git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d  
    
  • Après exécution depuis la branche main après déploiement, des dizaines de branches peuvent être réduites à quelques-unes
  • Cette commande peut être enregistrée comme alias Git pour être lancée plus facilement
    alias ciaclean='git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d'  
    
    • Ensuite, il suffit de saisir ciaclean dans le dépôt pour lancer automatiquement le nettoyage

Efficacité et aspect pratique

  • Cette commande permet de gagner quelques minutes chaque semaine et d’avoir une liste de branches propre
  • Simple, mais considérée comme un outil pratique offrant un gain de productivité continu

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.