Git Filter Repo

Zaawansowany Git

Amanda Crawford-Adamo

Software and Data Engineer

Czym jest git filter-repo?

Polecenie Git Filter-Repo

git filter-repo

Narzędzie do szybkiego i bezpiecznego przepisywania historii repozytorium Git.

  • Zmiana nazw plików lub katalogów
  • Działa jednocześnie na wszystkich gałęziach

Zastosowania

  1. Usuwanie poufnych danych (np. haseł, tokenów)
  2. Czyszczenie zbędnych plików
  3. Restrukturyzacja repozytoriów
  4. Zmniejszanie rozmiaru repozytorium
Zaawansowany Git

Proces Filter-Repo

  1. Instalacja git filter-repo za pomocą pip

    pip install git-filter-repo
    
  2. Usunięcie pliku secrets.txt z każdego commitu

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

Filtry Filter-Repo

--path: określa ścieżki, na których wykonywana jest operacja

--invert-paths: działa na wszystkich ścieżkach z wyjątkiem podanych w --path

Zaawansowany Git

Wynik działania Filter-Repo

Wynik

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

Kluczowe konsekwencje

  • Wszystkie gałęzie i commity zostały zaktualizowane
  • Wszystkie skróty commitów uległy zmianie
  • Po tym kroku wymagane jest force push
  • Członkowie zespołu będą musieli ponownie sklonować repozytorium
Zaawansowany Git

Kiedy używać filter-repo

Przypadki użycia

  • Usuwanie poufnych danych (np. haseł)
  • Czyszczenie przepełnionych repozytoriów
  • Zmiana nazw lub reorganizacja plików we wszystkich commitach

Wskazówki

  • Przed użyciem filter-repo należy zawsze wykonać kopię zapasową repozytorium
  • Przed wypchnięciem przepisanej historii należy skoordynować działania z współpracownikami
Zaawansowany Git

Czas na ćwiczenia!

Zaawansowany Git

Preparing Video For Download...