Wenn ich einen Commit-Hash habe, der noch nicht an den Ursprung gepusht wurde, wie kann ich dann einen Patch nur für diesen Commit generieren? Ich möchte verwenden git log -p --no-names
kann aber keinen Schalter sehen, um einen bestimmten Commit-Hash zu übergeben. Sollte ich einen anderen Git-Befehl verwenden?
Wie erhalte ich einen “git log”-Patch für einen bestimmten Commit
manojlds
Für Git-Log-Patch:
git log -p -1 <commit>
Sie sollten verwenden git format-patch
aber für Patches:
git format-patch -1 <commit>
http://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html
-
Danke. Was ist der Vorteil von format-patch statt
git log -p
?– Jonathan-Tag
5. Mai 2011 um 3:03 Uhr
-
@Jonathan: Beide reichen als Diff aus, das von einem Menschen konsumiert werden soll (z. B. zur Überprüfung), aber die Ausgabe von
git format-patch
kapselt die Autoreninformationen und die Commit-Nachricht (sowie den Diff-Text) in ein Standardformat, sodass sie zuverlässig von anderen Tools (zgit send-email
um sie als E-Mails zu versenden undgit am
um einen oder mehrere Patches anzuwenden (z. B. einige, die als empfangene E-Mails gesammelt wurden)).– Chris Johnsen
5. Mai 2011 um 15:34 Uhr
-
Danke @Chris, das ist hilfreich. Es scheint, dass der Ubuntu-Patch Probleme beim Analysieren der Ausgabe von hat
git log -p
das könnte also die lösung sein– Jonathan-Tag
6. Mai 2011 um 0:34 Uhr
-
@Jonathan: Unterschiede im Git-Stil (dh solche mit a
diff --git
Header) haben mehrere Erweiterungen, die regelmäßig sind Patch nicht verstehen (das Format ist jedoch sehr ähnlich, daher kann es in vielen Fällen funktionieren). Sie können einfache Diffs anwenden (z. B. vongit diff
odergit log -p
) mitgit apply
(sogar außerhalb des Arbeitsbaums eines Repositorys) oder wenn Sie vollständige „Patches“ von habengit format-patch
können Sie verwendengit am
um die dargestellten Commits (neu) zu erstellen.– Chris Johnsen
6. Mai 2011 um 2:52 Uhr