Git Filter Repo

Git avancé

Amanda Crawford-Adamo

Software and Data Engineer

Qu'est-ce que git filter-repo ?

Commande Git Filter-Repo

git filter-repo

Un outil pour réécrire l'historique d'un dépôt Git rapidement et en toute sécurité.

  • Renommer des fichiers ou des répertoires
  • Agit sur toutes les branches en même temps

Objectifs

  1. Retirer des données sensibles (p. ex., mots de passe, jetons)
  2. Nettoyer les fichiers inutiles
  3. Restructurer des dépôts
  4. Réduire la taille du dépôt
Git avancé

Processus Filter-Repo

  1. Installer git filter-repo avec pip

    pip install git-filter-repo
    
  2. Retirer secrets.txt de chaque commit

    git filter-repo --path secrets.txt --invert-paths
    

Filtres liés à Filter-Repo

--path : indique les chemins visés

--invert-paths : agit sur tous les chemins sauf ceux indiqués avec --path

Git avancé

Résultat de Filter-Repo

Sortie

  Parsed 150 commits
  New history written in 0.10 seconds; now repacking/cleaning...
  Repacking your repo and cleaning out old unneeded objects

Principales conséquences

  • Toutes les branches et tous les commits ont été mis à jour
  • Tous les hachages de commit ont changé
  • Un envoi forcé est requis après cette étape
  • Les membres de l'équipe devront cloner de nouveau le dépôt
Git avancé

Quand utiliser filter-repo

Cas d'utilisation

  • Retirer des données sensibles (p. ex., mots de passe)
  • Nettoyer des dépôts volumineux
  • Renommer ou réorganiser des fichiers dans tous les commits

Conseils

  • Sauvegardez toujours le dépôt avant d'utiliser filter-repo
  • Coordonnez-vous avec les collaborateurs avant de pousser l'historique réécrit
Git avancé

Passons à la pratique !

Git avancé

Preparing Video For Download...