Ich möchte einen Patch für die letzten 2 Versionen erstellen.
git format-patch -2
gibt mir 2 Patch-Dateien, eine für jede Revision
git format-patch HEAD~2..HEAD
gibt das Gleiche.
git format-patch -1 HEAD~2..HEAD
gibt eine einzelne Datei aus, enthält jedoch nur Änderungen für die letzte Revision.
Gibt es eine Möglichkeit, dies in git zu tun?
git diff HEAD~2..HEAD > my-patch.diff
Es werden jedoch keine Metadaten von pro-commit von format-patch vorhanden sein.
Verwenden Sie die Option --stdout und ordnen Sie sie dann einer Datei zu.
So wie:
git format-patch HEAD~2..HEAD --stdout > changes.patch
Dadurch werden die Metadaten pro Commit beibehalten.
Mit Git 2.20 (Q4 2018) und mehr haben Sie jetzt:
git format-patch --interdiff
.git format-patch --rangediff
. Beide helfen, den Unterschied zwischen dieser Version und dem vorherigen Versuch im Anschreiben (oder nach den Baumstrichen als Kommentar) zu erklären.
format-patch
: Erlaube--interdiff
/--rangediff
, sich auf ein Einzelpatch anzuwendenWenn Sie eine überarbeitete Version eines Patches oder einer Serie übermitteln, kann es hilfreich sein (für Prüfer), eine Zusammenfassung der Änderungen seit dem vorherigen Versuch in Form eines Interdiff-Dokuments hinzuzufügen, normalerweise im Begleitschreiben.
Es ist jedoch gelegentlich nützlich, trotz eines lauten Lesens einen Interdiff oder Rangediff in den Kommentarbereich des Lone-Patches einer 1-Patch-Serie einzufügen.
Siehe commit ee6cbf7 , commit 3fcc7a2 , commit 3b02641 , commit 5ac290f , commit 126facf , commit fa5b7ea (22 Jul 2018) von Eric Sunshine (sunshineco
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Festschreibung 688cb1c , 17. September 2018)
Erweitern Sie "
git format-patch --interdiff=<prev>
", um ein Interdiff in den Kommentarbereich eines einzelnen Patches einzufügen, anstatt ein Anschreiben zu benötigen.
Der Interdiff ist eingerückt, um zu vermeiden, dassgit-am
und menschliche Leser verwirrt werden, um ihn als Teil des Patches zu betrachten.
Siehe commit 40ce416 , commit 8631bf1 , commit 4ee9968 , commit 2e6fd71 , commit 31e2617 , commit 73a834e , commit 2566865 , Commit 87f1b2d (22 Jul 2018) von Eric Sunshine (sunshineco
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 881c019 , 17. September 2018)
Erweitern Sie "
git format-patch --range-diff=<refspec>
", um einenrange-diff
in den Kommentarbereich eines einzelnen Patches einzufügen, anstatt ein Anschreiben zu benötigen.
Sie könnten so etwas tun:
$ git checkout -b tmp $ git reset HEAD ~ 2 $ git commit -a
Das Commit zum Zweig tmp ist das gleiche wie bei den 2 einzelnen Commits.