wake-up-neo.net

Wie erstelle ich in git einen einzelnen Patch für die letzten 2+ Versionen?

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?

47
Matthew
git diff HEAD~2..HEAD > my-patch.diff

Es werden jedoch keine Metadaten von pro-commit von format-patch vorhanden sein.

50
Tobu

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.

41
JC Brand

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 anzuwenden

Wenn 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, dass git-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 einen range-diff in den Kommentarbereich eines einzelnen Patches einzufügen, anstatt ein Anschreiben zu benötigen.

1
VonC

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.

0
William Pursell