Aktualisiert mit Informationen von torek geliefert; ich bin mir nicht sicher, warum er das nicht als Antwort geschrieben hat, weil es viel kürzer ist als das, was ich skizziert habe; so anstatt es in den Kommentaren zu hinterlassen, hier ist es:
git diff
kann für zwei BLOB
s auf Kennungen arbeiten und eine Abkürzung für eine BLOB
ist die Identifizierung <commit>:<path>
. also
git diff master:UsrActivity.java branch:ProfileActivity.java
(angepasst wie für Pfade und Festschreibeidentifikation erforderlich).
Original-Antwort
Sie können zwei Commits geben, aber dann nur einen Weg. Sie können zwei Pfade angeben, aber dann können Sie keine Commits angeben. Wenn es eine Möglichkeit gibt, zwei Commits und einen anderen Pfad für jedes zu spezifizieren, weiß ich es nicht ... Also ich denke, zu tun, was Sie wollen, braucht ein bisschen mehr Arbeit.
Eine Möglichkeit besteht darin, die Objekt-ID (SHA) für jede Datei abzurufen. Für eine ausgecheckte Datei, könnte man sagen
git hash-object UsrActivity.java
die von einem Objekt zu erhalten, die nicht ausgecheckt ist, Sie so etwas wie
git log -n1 -raw --no-abbrev <commit-or-branch-containing-file> -- ProfileActivity.java
(Es gibt wahrscheinlich einfachere Versionen tun könnte Ich habe heute Morgen noch nicht viel Koffein gehabt.) Oder Sie können natürlich einen Commit mit der 2. Datei prüfen (oder einfach die Datei von einem solchen Commit abchecken) und zum Befehl git hash-object
zurückkehren.
Sobald Sie einen Hash für jede Datei haben, würden Sie sagen, nur
git diff <file-1-hash> <file-2-hash>
Natürlich, wenn Sie beide Dateien Auschecken am Ende in die worktree, dann kann man sie nur direkt diff
git diff UsrActivity.java ProfileActivity.java
Verwenden Sie 'git rev-parse', um einen beliebigen commit-specifier-plus-Pfadnamen in den Blob-Hash der übergebenen Datei umzuwandeln:' git rev-parse OldBranch: ProfileActivity.java' zum Beispiel. Dann, da 'git diff' funktioniert, so tut 'git diff : : '. –
torek