Wie kann ich Patch mit dem formatieren, was ich verstaue?

Lesezeit: 4 Minuten

Wie kann ich Patch mit dem formatieren was ich verstaue
Silberburg

In Git verstaue ich meine Änderungen. Ist es möglich, dass ich mit dem, was ich verstaue, einen Patch erstellen kann? Und diesen Patch dann in einem anderen Repository (dem meines Kollegen) anwenden?

Ich weiss git format-patch -1, aber ich denke, dass es für das ist, was ich begangen habe. Aber ich suche dasselbe für Änderungen, die ich verstaut habe.

Und wie kann ich einen Patch in einem anderen Repository anwenden?

Wie kann ich Patch mit dem formatieren was ich verstaue
Greg Hewgill

Sicher, git stash show unterstützt dies:

git stash show -p

Also, verwenden

git stash list

um die Nummer des Stashs herauszufinden, den Sie als Patch exportieren möchten

git stash show -p stash@{<number>} > <name>.patch

um es zu exportieren.

Beispielsweise:

git stash show -p stash@{3} > third_stash.patch

  • Ich habe eine verwandte Frage zum Anwenden eines Patches. Nehmen wir an, mein Patch berührt mehrere Dateien. Gibt es eine Möglichkeit, den Patch „interaktiv“ anzuwenden? Wählen Sie aus, auf welche Dateien des Patches ich den Patch anwenden soll? Kann ich das machen?

    – Silberburg

    30. Januar 10 um 1:43 Uhr

  • @silverburgh: Ich habe kurz durchgeschaut man patch und ich habe keine Optionen für interaktive Patch-Anwendung gesehen. Da Patch-Dateien jedoch selbst reine Textdateien sind, würde man den Patch normalerweise in einem Texteditor bearbeiten, um die relevanten Teile für die Anwendung auszuschneiden patch. Wenn Sie den Patch alternativ auf ein anderes Git-Repository anwenden, können Sie ihn alle und dann selektiv anwenden git checkout Dateien, die Sie nicht ändern wollten (git checkout mit einem Dateinamen wirft ungestaffelte Änderungen weg).

    – Greg Hewgill

    30. Januar 10 um 2:08 Uhr

  • @silverburgh Sie können den Satz der gepatchten Dateien einschränken, indem Sie die Parameter “–exclude” und “–include” von git apply verwenden.

    – Kelvin

    16. August 11 um 19:24 Uhr

  • @silverburgh Sie können Folgendes tun, vorausgesetzt, Sie haben einen Patch. Wenden Sie den Patch vollständig an und tun Sie es dann git add --interactive ${YOUR_FILES} und es gibt Ihnen die Möglichkeit, sich teilweise zu verpflichten.

    – Alexander Ach

    8. Februar 13 um 13:18 Uhr

  • Danke. Das hat bei mir funktioniert: git stash show -p stash@{1} > patch.txt

    – Ryan

    30. Mai ’14 um 15:51 Uhr

Diese Antwort enthält Informationen zum Speichern des Patches und zum Anwenden dort, wo Sie ihn verwenden möchten.

So speichern Sie die Ausgabe in einer Datei:

 git stash show -p --color=never > my-patch-name.patch

Überprüfen Sie, ob der Patch gut aussieht:

git apply --stat my-patch-name.patch

Überprüfen Sie, ob keine Fehler vorliegen:

git apply --check my-patch-name.patch

Wenden Sie den Patch an

git apply my-patch-name.patch

  • Dieser funktionierte für mich mit Klartext-Codedateien, aber ich musste Leerzeichen berücksichtigen. Überprüfen Sie, ob der Patch gut aussieht: git apply --check --ignore-space-change --ignore-whitespace my-patch-name.patch Wenden Sie den Patch an: git apply --ignore-space-change --ignore-whitespace my-patch-name.patch

    – Craig Boland

    16. September 15 um 20:41 Uhr


  • Schöne und prägnante Erklärung. Damit es funktioniert, musste ich mich beim Anwenden des Patches im Repo-Root befinden, sonst git apply habe das Diff nicht erfasst.

    – max

    28. Februar 19 um 15:55 Uhr


Benutzen

$> git stash list
stash@{0}: WIP on master: 84fx31c Merged with change to /public/
stash@{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter

, um eine Liste Ihrer kürzlich abgelegten Sachen zu erhalten. Git erstellt tatsächlich Commit-Objekte, wenn Sie stashen.

Sie sind Commits wie alles andere. Sie können sie in einer Filiale auschecken:

$> git checkout -b with_stash stash@{0}

Sie können diesen Branch dann veröffentlichen und Ihr Kollege kann diesen Commit zusammenführen oder aussuchen.

1642296967 876 Wie kann ich Patch mit dem formatieren was ich verstaue
David Guerri

Die oben genannten Lösungen funktionieren nicht für Binärdaten. Die folgenden fügen Unterstützung dafür hinzu:

git stash show stash@{0} -p --binary

Bearbeiten

Hinweis: Ich wollte nur einen Kommentar zu den obigen Antworten hinzufügen, aber mein Ruf reicht nicht aus.

Ich glaube, dies könnte eines der letzten Updates von Git sein. Sie müssen die Änderungen, die Sie gespeichert haben, nicht mehr patchen. Sie können Ihre gestasheden Änderungen einfach von einem Zweig auf einen anderen anwenden.

Angenommen, Sie haben auf Zweig A einige Änderungen gespeichert, die als stash@{1} bezeichnet werden.

Sie wechseln jetzt zu Zweig B. Sie können einfach Folgendes tun:

$git stash apply stash@{1}

Dadurch werden Ihre Änderungen in Zweig A auf Zweig B angewendet.

.

499020cookie-checkWie kann ich Patch mit dem formatieren, was ich verstaue?

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

Privacy policy