Przepisywanie historii za pomocą git filter-repo
Dowiedz się, jak przepisywać historię repozytorium na dużą skalę, aby usuwać duże pliki lub poufne dane za pomocą git filter-repo.
Przepisywanie historii za pomocą git filter-repo to bezpłatna lekcja Git & GitHub Professional Workflow na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Git & GitHub Professional Workflow, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.
Dlaczego przepisywać historię
Czasami trzeba przepisać całą historię repozytorium: aby usunąć ujawnione hasło, skasować duże pliki przypadkowo commitowane do repozytorium lub poprawić adresy e-mail autorów we wszystkich commitach.
Poznaj git filter-repo
git filter-repo to nowoczesne i szybkie narzędzie do przepisywania historii. Zastępuje stare i powolne narzędzie git filter-branch.
Instalowanie narzędzia
To osobny program, często instalowany za pomocą pip lub menedżera pakietów.
pip install git-filter-repoZawsze pracuj na klonie
Przepisywanie historii jest operacją destrukcyjną. Należy pracować na świeżym klonie, aby w razie problemów można było go usunąć.
git clone --mirror git@github.com:you/repo.gitUsuwanie pliku z historii
Aby usunąć plik z każdego commita, należy użyć opcji --path i --invert-paths.
git filter-repo --path secrets.env --invert-pathsUsuwanie dużych obiektów blob
Można usunąć pliki przekraczające określony próg rozmiaru, aby zmniejszyć nadmiernie rozrośnięte repozytorium.
git filter-repo --strip-blobs-bigger-than 10MPrzepisywanie adresów e-mail autorów
Błędny adres e-mail autora we wszystkich commitach można poprawić za pomocą mailmapy lub callbacka.
git filter-repo --mailmap my-mailmap.txtZastępowanie tekstu w historii
Należy usunąć poufne ciągi znaków ze wszystkich miejsc, w których występują, używając pliku wyrażeń.
git filter-repo --replace-text expressions.txtZmiana hashy commitów
Przepisanie historii powoduje utworzenie nowych hashy commitów dla wszystkich zmienionych elementów. Historia repozytorium rozbiega się od historii znajdującej się w starych kopiach.
Wymuszanie wysłania wyniku
Po przepisaniu historii trzeba wykonać force push, ponieważ historia zdalna nie jest już zgodna z lokalną.
git push --force --allKoordynowanie działań z zespołem
Ponieważ klony wszystkich osób są teraz nieaktualne, członkowie zespołu muszą ponownie sklonować repozytorium. Należy ogłosić przepisanie historii, aby uniknąć ponownego wprowadzenia usuniętych danych.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat przepisywania historii.
Podsumowanie
Dowiedziałeś się, jak przepisywać historię:
git filter-repozastępuje filter-branch- Usuwaj pliki, duże obiekty blob lub poufny tekst z całej historii
- Zawsze pracuj na klonie, ponieważ hashe commitów ulegają zmianie
- Wykonaj force push, a następnie poproś zespół o ponowne sklonowanie repozytorium
Często zadawane pytania
Czy lekcja „Przepisywanie historii za pomocą git filter-repo” jest bezpłatna?
Tak — pełny tekst „Przepisywanie historii za pomocą git filter-repo” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Git & GitHub Professional Workflow, przejdź na CoddyKit PRO. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.
Co nauczysz się w „Przepisywanie historii za pomocą git filter-repo”?
Dowiedz się, jak przepisywać historię repozytorium na dużą skalę, aby usuwać duże pliki lub poufne dane za pomocą git filter-repo. Ćwiczysz Git & GitHub Professional Workflow z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Git & GitHub Professional Workflow?
Nie wymagamy żadnego doświadczenia. Git & GitHub Professional Workflow w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Przepisywanie historii za pomocą git filter-repo”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Git & GitHub Professional Workflow?
Tak. Każda lekcja Git & GitHub Professional Workflow zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Git Reflog i odzyskiwanie historii
- Git Bisect do debugowania
- Utrzymanie i porządkowanie repozytorium
- Przepisywanie historii za pomocą git filter-repo