Wie erstelle ich einfach einen Patch aus meinem letzten Git-Commit?

Lesezeit: 3 Minuten

Benutzer-Avatar
Claj

Ich suche nach dem Befehl zum Erstellen eines Patches aus dem letzten durchgeführten Commit.

Mein Workflow sieht manchmal so aus:

vi some.txt
git add some.txt
git commit -m "some change"

Jetzt will ich nur noch schreiben:

git create-patch-from-last-commit-to-file SOME-PATCH0001.patch

Was soll ich da stattdessen setzen create-patch-from-last-commit-to-file?

  • mögliches Duplikat von Generate a git patch for a specific commit

    – manojlds

    22. Februar 2012 um 17:19 Uhr

  • Eine gute Quelle: ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git

    – Adam Ocsvari

    4. September 2015 um 10:10 Uhr

  • Erforderliche vorläufige Einrichtungsinformationen (meine eigenen Fragen und Antworten): Wie zu konfigurieren und zu verwenden git send-email um mit Google Mail zu arbeiten, um Patches per E-Mail an Entwickler zu senden

    – Gabriel Staples

    3. Juli 2021 um 18:47 Uhr


Benutzer-Avatar
Nicht zu gebrauchen

Im Algemeinen,

git format-patch -n HEAD^

(Überprüfen Sie die Hilfe für die vielen Optionen), obwohl es wirklich zum Versenden ist. Nur für einen einzigen Commit

git show HEAD > some-patch0001.patch

gibt Ihnen einen brauchbaren Patch.

  • Seien Sie vorsichtig mit “git show HEAD > some-patch0001.patch”, wenn es im farbigen Terminal aufgerufen wird, kopiert es auch farbige Escape-Sequenzen in die Datei.

    – rach

    21. April 2013 um 10:34 Uhr

  • Sie können auch verwenden git diff > change.patch. Sie können auch einen Revisionsbereich einschließen und damit Patches für nicht festgeschriebene Änderungen erstellen. Der große Unterschied besteht jedoch darin Unterschiede in Binärdateien werden nicht berücksichtigt. Siehe die Antwort auf Was ist der Unterschied zwischen „git format-patch“ und „git diff“? für mehr Details.

    – Rangi Keen

    27. Dezember 2013 um 15:34 Uhr


  • @hrach nicht unter Linux tut es das nicht

    – Robin Grün

    22. Februar 2014 um 12:09 Uhr

  • Nein, denn das steht nicht in der ersten Zeile. Entweder git format-patch -1 oder git format-patch -n HEAD^ sollte arbeiten.

    – Nicht zu gebrauchen

    14. Januar 2016 um 14:37 Uhr


  • Danke, ich hatte nicht verstanden, dass es buchstäblich der Buchstabe ‘n’ war, ich dachte, es wäre ein Platzhalter (format-patch hat sowohl die Optionen ‘-n’ als auch ‘-‘).

    – Etienne

    18. Januar 2016 um 21:51 Uhr


Benutzer-Avatar
a1an

Ausgehend von @Useless answer können Sie auch das allgemeine Formular ohne Parameter für den letzten Commit verwenden und es in eine Datei einfügen mit:

git format-patch HEAD^ --stdout > patchfile.patch

Oder sauberer für Windows-Benutzer, wenn Carets durch Verdoppelung umgangen werden müssen:

git format-patch HEAD~1 --stdout > patchfile.patch

  • Hat bei mir funktioniert – danke. Wenn Sie zufällig Windows und Git verwenden, müssen Sie der Karotte entkommen (ich weiß, abscheulich): “git format-patch HEAD^^ –stdout > patchfile.patch”

    – Steve Midgley

    27. August 2013 um 17:59 Uhr

  • Um das Windows-Problem zu vermeiden, dass dieses Caret maskiert werden muss (was es wie einen anderen gültigen Git-Befehl aussehen lässt), können Sie die Alternative von verwenden git format-patch HEAD~1. Ich denke, das ist unter Windows weniger verwirrend.

    – Michael Burr

    14. Januar 2016 um 22:53 Uhr

  • Sie können auch -o flag anstelle von –stdout verwenden. git format-patch HEAD^ -o ./patchfile.patch

    – OMKAR AGRAWAL

    13. April um 14:28 Uhr

Auf andere Weise, wenn Sie die Commit-ID dieses bestimmten Commits haben, können Sie Folgendes verwenden:

git format-patch -1 {commit-id}

git format-patch -1

Macht den Job für mich.

Du brauchst die -p Option zum Git-Protokoll:

git log -1 -p --pretty='%b'

  • Verwenden Sie diese Option, wenn Ihnen die E-Mail-Von/Datum/Betreff-Zeilen am Anfang der Datei egal sind.

    –Ryan H.

    16. August 2017 um 23:47 Uhr

Benutzer-Avatar
Abdullah Imran

Zum Beispiel, wenn Sie Code in den Branch „branch_name“ auf Github pushen. Jeder Commit auf diesem Zweig hat eine separate URL. Klicken Sie auf Letztes Commit.

  1. Hinzufügen .Patch am Ende dieser URL. Die geänderte URL sieht also so aus:
    https://github.com/xyz/lmn-ms/tree/branch_name.patch.
  2. Kopieren Sie dann den gesamten Inhalt, der in Schritt 1 kommt, und fügen Sie ihn in eine separate lokale Datei ein und speichern Sie ihn mit der Erweiterung .patch.
  3. Patch ist gebrauchsfertig.

  • Verwenden Sie diese Option, wenn Ihnen die E-Mail-Von/Datum/Betreff-Zeilen am Anfang der Datei egal sind.

    –Ryan H.

    16. August 2017 um 23:47 Uhr

1016830cookie-checkWie erstelle ich einfach einen Patch aus meinem letzten Git-Commit?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy