git format-patch
Commits in versandfertige Patch-Dateien umwandeln
Der Befehl 'git format-patch' schreibt jeden Commit eines Bereichs in eine eigene nummerierte .patch-Datei: Autor, Datum, die Commit-Nachricht als Betreff und Text der E-Mail, eine Änderungsübersicht und den Diff. Projekte mit Review über Mailinglisten (wie Git selbst und der Linux-Kernel) bekommen Beiträge so, und git am macht aus den Dateien wieder Commits.
Syntax
git format-patch [-o <dir>] [--stdout] [-<n>] [<since> | <revision-range>]Optionen
Die richtige Option wählen
Wege, Commits weiterzugeben
Mit Autor und Nachricht
| Befehl | Behält die Urheberschaft |
|---|---|
git diff > change.diff | No |
git format-patch + git am | Ja |
git bundle | Ja (ganze Commits und Branches) |
Beispiele
Commits seit main
git format-patch mainEine Datei pro Commit, der nicht auf main ist.
Der letzte Commit
git format-patch -1Nur der neueste Commit.
In einen Ordner
git format-patch main -o patchesDie Dateien nach patches/ schreiben.
Mit Anschreiben
git format-patch --cover-letter mainEine Einleitungs-E-Mail 0000 hinzufügen.
Workflow-Beispiele
git format-patch main -o outgoingEine Datei pro Commit
git send-email outgoing/*.patchAn die Liste schicken
Fehlerbehebung
Keine Patch-Dateien erstellt
Ursache: Der Bereich ist leer (z. B. hat dein Branch keine Commits über main hinaus)
Prüfe mit git log --oneline main..HEAD
Tipps & Stolperfallen
Best Practices
- ✓Rebase auf das neueste main, bevor du Patches erstellst.
- ✓Eine logische Änderung pro Commit — jede wird zu einer E-Mail.
Häufige Fehler
- ✗Einen git diff statt format-patch schicken — ein Diff verliert Autor, Datum und Nachricht.
- ✗Den Bereich vergessen und nichts bekommen: format-patch braucht einen Startpunkt (main, -1…).
FAQ
Ja, aber git apply ändert nur Dateien; git am erstellt auch den Commit mit ursprünglichem Autor und Nachricht.