Git Filter Repo

Geavanceerd Git

Amanda Crawford-Adamo

Software and Data Engineer

Wat is git filter-repo?

Git filter-repo-commando

git filter-repo

Een tool om Git-geschiedenis snel en veilig te herschrijven.

  • Hernoem bestanden of mappen
  • Werkt tegelijk op alle branches

Doelen

  1. Verwijder gevoelige data (bv. wachtwoorden, tokens)
  2. Ruim overbodige bestanden op
  3. Herstructureer repositories
  4. Verklein de repo
Geavanceerd Git

Filter-Repo-proces

  1. Installeer git filter-repo met pip

    pip install git-filter-repo
    
  2. Verwijder secrets.txt uit elke commit

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

Filter-Repo filters

--path: geeft paden op om op te werken

--invert-paths: werk op alle paden behalve die in --path

Geavanceerd Git

Filter-Repo-resultaat

Output

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

Belangrijkste gevolgen

  • Alle branches en commits zijn bijgewerkt
  • Alle commit-hashes zijn veranderd
  • Force push is nodig hierna
  • Teamleden moeten de repo opnieuw clonen
Geavanceerd Git

Wanneer filter-repo gebruiken

Use cases

  • Gevoelige data verwijderen (bv. wachtwoorden)
  • Opgeblazen repositories opschonen
  • Bestanden hernoemen of reorganiseren in alle commits

Tips

  • Maak altijd een back-up vóór je filter-repo gebruikt
  • Stem af met samenwerkers vóór je herschreven geschiedenis pusht
Geavanceerd Git

Laten we oefenen!

Geavanceerd Git

Preparing Video For Download...