git format-patch

Patches & Umschreiben

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>]
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (2)

Schreibt die Patch-Dateien in diesen Ordner.

EmpfohlenPatch-Dateien aus dem Projektstamm heraushalten

Beispiel

git format-patch -1 -o patches

Gibt alle Patches im Terminal aus, statt Dateien zu schreiben.

Bei BedarfDie Patches an ein anderes Programm oder eine Datei schicken

Beispiel

git format-patch --stdout main > series.mbox

Fortgeschritten (1)

Schreibt zusätzlich 0000-cover-letter.patch, eine Einleitungs-E-Mail für die Serie.

Bei BedarfEine Serie aus mehreren Patches einleiten

Beispiel

git format-patch --cover-letter main

Die richtige Option wählen

Wege, Commits weiterzugeben

Mit Autor und Nachricht

BefehlBehält die Urheberschaft
git diff > change.diffNo
git format-patch + git amJa
git bundleJa (ganze Commits und Branches)

Beispiele

Commits seit main

git format-patch main

Eine Datei pro Commit, der nicht auf main ist.


Der letzte Commit

git format-patch -1

Nur der neueste Commit.


In einen Ordner

git format-patch main -o patches

Die Dateien nach patches/ schreiben.


Mit Anschreiben

git format-patch --cover-letter main

Eine Einleitungs-E-Mail 0000 hinzufügen.

Workflow-Beispiele

1
git format-patch main -o outgoing

Eine Datei pro Commit

2
git send-email outgoing/*.patch

An 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

A:

Ja, aber git apply ändert nur Dateien; git am erstellt auch den Commit mit ursprünglichem Autor und Nachricht.