git-edit-date a amend, rebase, filter-branch i filter-repo
Daty commitów Git można zmienić na kilka sposobów.
To uczciwe porównanie pomoże Ci wybrać właściwe narzędzie —
od git commit --amend dla jednego commitu po zbiorczą edycję CSV całej gałęzi.
Tabela porównawcza
| git-edit-date | git commit --amend | interaktywny rebase | filter-branch | filter-repo | |
|---|---|---|---|---|---|
| Zbiorcza edycja dat | CSV w arkuszu | Tylko ostatni commit | Jeden commit naraz | Skrypt env-filter powłoki | Skrypt wywołania zwrotnego w Pythonie |
| Edycja e-maila autora | Tak | Tylko ostatni commit | Ręcznie dla każdego commitu | env-filter | mailmap / wywołanie zwrotne |
| Wizualna kontrola przed zastosowaniem | Arkusz | Nie | Nie | Nie | Nie |
| Próg wejścia | Niski | Niski | Średni | Wysoki | Średni |
| Oficjalne utrzymanie | Aktywne | Wbudowane w git | Wbudowane w git | Przestarzałe | Zalecany zamiennik |
| Najlepsze zastosowanie | Zbiorcze poprawki gałęzi przez CSV | Poprawa tylko commitu na końcu gałęzi | 1–3 ostatnie commity | Starsze skrypty jednorazowe | Złożone migracje całego repozytorium |
Kiedy użyć git-edit-date
- Musisz poprawić wiele commitów w jednej gałęzi
- Chcesz sortować, filtrować i sprawdzać daty w Excelu lub LibreOffice
- Musisz zmienić zarówno daty autora, jak i committera, wraz z przesunięciami stref czasowych
- Chcesz prostego procesu export → edycja → apply bez pisania skryptów powłoki
Kiedy użyć git commit --amend
- Poprawy daty lub autora wymaga tylko najnowszy commit
- Nie wypchnięto go jeszcze lub akceptujesz przepisanie samego końca gałęzi
- Wystarczy jedno polecenie, na przykład
GIT_AUTHOR_DATE=… GIT_COMMITTER_DATE=… git commit --amend --no-edit
Amend działa na jednym commicie. Jeśli musisz poprawić daty w całej gałęzi, skorzystaj z Tutoriala CSV, zamiast wielokrotnie zatrzymywać amend lub rebase.
Kiedy użyć interaktywnego rebase
- Zmiany daty wymaga tylko ostatni commit (lub kilka commitów)
- Już używasz rebase do scalania lub zmiany kolejności commitów
- Swobodnie posługujesz się
git rebase -ii poleceniami amend
Kiedy użyć filter-branch
Prawdopodobnie nigdy. Git oficjalnie uznał filter-branch za przestarzałe
na rzecz filter-repo. Nadal występuje w starych poradnikach i odpowiedziach na Stack Overflow,
ale składnia env-filter przy przepisywaniu dat jest podatna na błędy.
Kiedy użyć filter-repo
- Historia całego repozytorium wymaga restrukturyzacji
- Usuwasz sekrety, dzielisz repozytoria lub masowo zmieniasz autorów
- Wydajność i bezpieczeństwo są ważniejsze niż wygoda arkusza
W złożonych przypadkach filter-repo jest właściwym, nowoczesnym narzędziem. git-edit-date wygrywa, gdy chcesz użyć arkusza i szybko poprawić pojedynczą gałąź.
Wypróbuj git-edit-date
curl -LO https://giteditdate.com/git-edit-date_amd64.deb
sudo dpkg -i git-edit-date_amd64.deb
git-edit-date export -o commits.csv
Krok po kroku: Tutorial · Poradniki: Blog · Częste pytania: FAQ · Polecenia: Docs