git-edit-date vs. amend, rebase, filter-branch & filter-repo
Es gibt mehrere Möglichkeiten, die Commit-Daten von git zu ändern.
Hier ist ein ehrlicher Vergleich, der Ihnen bei der Auswahl des richtigen Werkzeugs helfen soll:
von git commit --amend für einen Commit zu CSV-Massenbearbeitungen für einen ganzen Zweig.
Vergleichstabelle
| git-edit-date | git-Commit --amend | interaktiv rebase | filter-branch | filter-repo | |
|---|---|---|---|---|---|
| Massenbearbeitungsdaten | CSV in der Tabelle | Nur letzter Commit | Ein Commit nach dem anderen | Shell-Env-Filter-Skript | Python-Rückrufskript |
| Bearbeiten Sie die E-Mail-Adresse des Autors | Ja | Nur letzter Commit | Manuell pro Commit | env-filter | Mailmap / Rückruf |
| Visuelle Überprüfung vor apply | Tabelle | No | No | No | No |
| Lernkurve | Niedrig | Niedrig | Mittel | Hoch | Mittel |
| Offiziell gewartet | Aktiv | Eingebaut in git | Eingebaut in git | Veraltet | Empfohlener Ersatz |
| Am besten für | Massenkorrekturen auf Zweigstellenebene über CSV | Korrigieren Sie nur den Tipp-Commit | 1–3 aktuelle Commits | Ältere one-off-Skripte | Komplexe Repo-weite Migrationen |
Wann ist git-edit-date zu verwenden?
- Sie müssen viele Commits in einem einzelnen Zweig reparieren
- Sie möchten Daten in Excel oder LibreOffice sortieren, filtern und überprüfen
- Sie müssen sowohl das Datum des Autors als auch des Committers mit Zeitzonen-Offsets ändern
- Sie möchten einen einfachen export → Bearbeiten → apply-Workflow, ohne Shell-Skripte schreiben zu müssen
Wann zu verwenden git commit --amend
- Nur die latest Commit benötigt eine Datums- oder Autorenkorrektur
- Sie haben noch nicht gedrängt, oder es ist in Ordnung, nur den Tipp umzuschreiben
- Ein Einzeiler genügt zum Beispiel
GIT_AUTHOR_DATE=… GIT_COMMITTER_DATE=… git commit --amend --no-edit
Amend stoppt bei einem Commit. Wenn Sie Termine in einer Filiale festlegen müssen, Benutze die CSV-Tutorial Anstatt die Stopps amend oder rebase zu wiederholen.
Wann sollte interaktives rebase verwendet werden?
- Nur das letzte Commit (oder nur sehr wenige) erfordert eine Datumsänderung
- Sie befinden sich bereits in einem rebase-Flow zum Komprimieren oder Neuanordnen
- Sie fühlen sich wohl damit
git rebase -iund amend-Befehle
Wann ist filter-branch zu verwenden?
Das solltest du wahrscheinlich nicht. Git offiziell veraltet filter-branch
für filter-repo. Es bleibt bei alten Tutorials und Stack Overflow-Antworten,
aber die Env-Filter-Syntax ist beim Umschreiben von Datumsangaben fehleranfällig.
Wann ist filter-repo zu verwenden?
- Der gesamte Repository-Verlauf muss neu strukturiert werden
- Sie entfernen Geheimnisse, teilen Repos auf oder führen eine umfangreiche Neuzuordnung von Autoren durch
- Leistung und Sicherheit sind wichtiger als der Komfort einer Tabellenkalkulation
Für komplexe Fälle ist filter-repo das richtige moderne Werkzeug. git-edit-date gewinnt, wenn Sie eine Tabellenkalkulation und eine schnelle Lösung auf Zweigstellenebene benötigen.
Versuchen Sie 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
Schritt für Schritt: tutorial · Anleitungen: blog · Häufige Fragen: FAQ · Befehle: docs