Beides git am
und git apply
kann zum Anwenden von Patches verwendet werden. Ich sehe den Unterschied nicht. Ich sehe jetzt einen Unterschied: git am
Festschreibt automatisch, während git apply
nur die Dateien berührt werden, aber kein Festschreiben erstellt wird. Ist das der einzige Unterschied?
134
am
könnte als Abkürzung fürApply Mail
...Antworten:
Sowohl die Eingabe als auch die Ausgabe sind unterschiedlich:
git apply
Nimmt einen Patch (z. B. die Ausgabe vongit diff
) und wendet ihn auf das Arbeitsverzeichnis (oder den Index, falls--index
oder--cached
verwendet) an.git am
Nimmt eine Mailbox mit Commits, die als E-Mail-Nachrichten formatiert sind (z. B. die Ausgabe vongit format-patch
), und wendet sie auf den aktuellen Zweig an.git am
wirdgit apply
hinter den Kulissen verwendet , erledigt jedoch mehr Arbeit vor (Lesen einesMaildir
odermbox
und Parsen von E-Mail-Nachrichten) und nach (Erstellen von Commits).quelle
git apply
scheint auch diegit format-patch
Ausgabe zu akzeptieren .git apply
würde auch für die Ausgabe von funktionieren,git format-patch
aber die Änderungen wären nicht bereitgestellt und müssten festgeschrieben werden (wodurch ein anderer Festschreibungspunkt in dem Index erstellt wird, auf den sie angewendet werden). Mitgit am
würden Sie die Commit-Informationen (zusammen mit dem Autor usw.) in den Index übernehmen, auf den sie angewendet werden.git apply
Dann dient das Patchen Ihres Repos (schlecht),git am
kann legitime Funktionsänderungen vornehmen und in Ihr Repo aufnehmen (bevorzugter Ansatz).git apply
dient zum Anwenden von geraden Unterschieden (z. B. vongit diff
), währendgit am
das Anwenden von Patches und Sequenzen von Patches aus E-Mails im mbox- oder Maildir-Format das "Gegenteil" von istgit format-patch
.git am
versucht, Festschreibungsnachrichten und Autorendetails aus E-Mail-Nachrichten zu extrahieren, weshalb Festschreibungen vorgenommen werden können.quelle
Mit
git am
der Patch anwenden also , wenn Sie verwendengit status
Sie keine lokalen Änderungen sehen.git apply
Ermöglicht es Ihnen, die Änderungen in den Quelldateien so vorzunehmen, als würden Sie den Code selbst schreiben,git status
undgit diff
gibt die Änderungen aus, die in dem von Ihnen angewendeten Patch vorgenommen wurden. Anschließend können Sie weitere Änderungen korrigieren / hinzufügen und sie zusammen als einen neuen Patch einreichen .quelle