So erstellen und wenden Sie einen Patch in Git an
Ein Patch überträgt Änderungen zwischen Repositorys als reine Textdatei. Hier erfahren Sie, wann Sie git diff oder git format-patch verwenden sollten, wann Sie git apply oder git am verwenden sollten und wie Sie einen Patch beheben, der sich nicht anwenden lässt.
Geschrieben von Kodmora
Das Softwarehaus hinter GitTree
- Commits
- Remotes und Push
Auf dieser Seite
Um einen Patch zu erstellen, führen Sie `git diff > fix.patch` für nicht committete Änderungen oder `git format-patch -1 HEAD` für Ihre letzte Commit aus. Um eine davon anzuwenden, führen Sie `git apply fix.patch` oder `git am 0001-my-change.patch` aus. Verwenden Sie git apply, wenn Sie die Änderungen nur in Ihrem Arbeitsordner haben möchten. Verwenden Sie git am, wenn Sie den ursprünglichen Commit mit seiner Nachricht und seinem Autor wünschen.
Was ist ein Git-Patch?
Ein Patch ist eine Textdatei, die auflistet, welche Zeilen in welchen Dateien entfernt und hinzugefügt werden müssen. Es eignet sich für Situationen, in denen Sie nicht auf die gleiche Remote-Version pushen können: Senden eines Fixes per E-Mail, Verschieben einer Änderung zwischen unabhängigen Repositorys oder Halten einer lokalen Änderung außerhalb der Versionskontrolle. Wenn Sie und die andere Person sich ein Remote teilen, ist eine Verzweigung einfacher.
Wie erstelle ich einen Patch aus nicht committeten Änderungen?
# unstaged changes
git diff > fix.patch
# staged changes
git diff --staged > fix.patch
# everything since the last commit
git diff HEAD > fix.patch
# include binary files
git diff --binary > fix.patchNeue Dateien, die nicht bereitgestellt werden, werden nicht in git diff angezeigt. Führen Sie zuerst git add auf ihnen aus und verwenden Sie dann --staged.
Wie erstelle ich einen Patch aus Commits?
# the last commit
git format-patch -1 HEAD
# the last three commits, one file each
git format-patch -3
# everything on this branch that main does not have
git format-patch main..feature/search -o patches/
# all of it in a single file
git format-patch main --stdout > feature.patchformat-patch schreibt Dateien mit dem Namen 0001-add-search-box.patch. Jeder behält die Nachricht, den Autor und das Datum des Commits, was bei einem einfachen git diff verloren geht.
Wie wende ich einen Patch an?
Überprüfen Sie es zuerst. Diese beiden Befehle ändern nichts:
# what it touches
git apply --stat fix.patch
# whether it will apply
git apply --check fix.patchDann wenden Sie es so an, wie Sie es benötigen:
# into the working folder, nothing staged
git apply fix.patch
# into the working folder and the staging area
git apply --index fix.patch
# as commits, with their messages and authors
git am patches/*.patchWas ist der Unterschied zwischen Git Apply und Git Am?
git apply | git am | |
|---|---|---|
| Liest | Irgendein Unterschied | Dateien von git format-patch oder Postfächern |
| Ergebnis | Geänderte Dateien, kein Commit | Ein Commit pro Patch |
| Behält Nachricht und Autor | Nein | Ja |
| Auf einen Misserfolg | Wendet standardmäßig nichts an | Stoppt; weiter oder git am --abort |
Wie behebe ich „Patch ist nicht anwendbar“?
error: patch failed: src/search.ts:14
error: src/search.ts: patch does not applyDie Datei wurde seit der Erstellung des Patches geändert, sodass ihre Kontextzeilen nicht mehr übereinstimmen. Probieren Sie diese der Reihe nach aus:
git apply --3way fix.patchverwendet die ursprünglichen Blobs zum Zusammenführen und hinterlässt normale Konfliktmarkierungen. Es benötigt diese Blobs in Ihrem Repository.git apply --whitespace=fix fix.patchhilft, wenn sich nur Leerzeichen oder Zeilenenden unterscheiden.git apply --reject fix.patchwendet an, was es kann, und schreibt die fehlerhaften Teile in.rej-Dateien, damit Sie sie manuell bearbeiten können.- Schauen Sie sich den Commit an, aus dem der Patch erstellt wurde, wenden Sie ihn dort an und führen Sie dann ein Rebase durch.
Verwenden Sie für git am git am --3way, lösen Sie den Konflikt, git add die Datei und führen Sie git am --continue aus. Führen Sie zum Zurücksetzen git am --abort aus, wie in So brechen Sie eine Zusammenführung oder ein Rebase ab aufgeführt.
Wie mache ich einen Patch rückgängig?
git apply -R fix.patch-R wendet den Patch in umgekehrter Reihenfolge an. Wenn Sie git am verwendet haben, handelt es sich bei den Commits um normale Commits. Machen Sie sie also mit `git reset` oder `git revert` rückgängig.
So erstellen und wenden Sie einen Patch in GitTree an
Speichern Sie einen Patch
Klicken Sie mit der rechten Maustaste auf ein Commit und öffnen Sie Kopieren, dann Patch aus Commit erstellen…. Wählen Sie mehrere Commits für Patch aus Commits erstellen… aus oder klicken Sie mit der rechten Maustaste auf eine geänderte Datei für Patch aus Dateiänderungen erstellen….
Wenden Sie einen Patch an
Führen Sie Patch anwenden… aus der Befehlspalette aus und wählen Sie die Datei aus. GitTree gibt an, wie viele Dateien und Commits es enthält und ob es binäre Änderungen enthält.
Wählen Sie, wie Sie es anwenden möchten
Wählen Sie unter Anwenden auf die Option Nur Arbeitsbaum (
git apply), Arbeitsbaum und Bereitstellung der Änderungen (git apply --index) oder Als Commits für den aktuellen Zweig (git am) und klicken Sie dann auf Übernehmen.

Die Anleitung zum Erstellen und Anwenden von Patches listet alle Optionen auf.
Häufig gestellte Fragen
Was ist der Unterschied zwischen Git Diff und Git Format-Patch?
git diff schreibt nur die Änderungen. git format-patch schreibt pro Commit eine Datei mit der Nachricht, dem Autor und dem Datum, damit git am den Commit neu erstellen kann.
Erstellt git apply ein Commit?
Nein. Es werden nur Dateien geändert. Überprüfen Sie sie und committen Sie dann wie gewohnt. Verwenden Sie git am, um Commits zu erhalten.
Wie wende ich einen Patch von GitHub an?
Fügen Sie .patch am Ende einer Commit- oder Pull-Request-URL auf GitHub hinzu, laden Sie die Datei herunter und führen Sie git am darauf aus.
Kann ein Patch Binärdateien enthalten?
Ja, wenn Sie es mit git diff --binary erstellen. git format-patch enthält standardmäßig binäre Änderungen.
Ist Cherry-Pick besser als ein Patch?
Wenn sich beide Commits in einem Repository oder einem abgerufenen Remote-Repository befinden, ja: `git cherry-pick` ist kürzer und verfolgt den Quell-Commit. Patches sind für den Fall gedacht, dass die Repositorys einander nicht erreichen können.
Quellen
Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 7. November 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.
