Um die Unterschiede zu einem vorherigen Commit in Git anzuzeigen, führe ich Folgendes aus:
git diff HEAD~1
Um die mit einem einzelnen verknüpften Commits anzuzeigen, file
würde ich Folgendes ausführen:
git log --oneline file
Aber wenn ich Folgendes ausführe und die Datei, auf die ich verweisen möchte, in den letzten Commits nicht geändert wurde, zeigt Git nichts an.
git diff HEAD~1 file
Wie kann ich den Diff auf ähnliche Weise anzeigen, HEAD
jedoch für eine bestimmte Datei, wenn diese Datei nicht in der von angezeigten Referenz festgeschrieben wurde HEAD
?
Antwort1
Sie müssen den SHA explizit referenzieren, wenn Sie den Diff einer Datei sehen möchten, die zwischen dem letzten Commit und dem davor nicht geändert wurde ( HEAD~1
).
Führen Sie das Protokoll aus, um einige der SHAs anzuzeigen, die Sie anzeigen möchten
git log --oneline <file>
Eine Beispielausgabe sieht wie folgt aus:
af46919 abgekratzt - stattdessen lokale Pizzeria angerufen b09206c hat Soße und eine Flasche Dr Pepper zur Liste hinzugefügt ad90f90 Teig kneten und über Nacht stehen lassen
Wenn Sie nun den Diff der an der Datei vorgenommenen Änderungen sehen möchten, verweisen Sie über den zweiten angezeigten SHA darauf. In diesem Fall haben wir dies aus dem Beispiel:
git diff b09206c <file>
Das Obige ist eine Abkürzung für
git diff b09206c HEAD <file>
Oder stellen Sie es sich so vor:
git diff <start-commit-SHA> <future-commit-SHA> <file>
Um es als einen Befehl auszuführen (z. B. für ein Skript), können Sie Folgendes tun:
git log --oneline <file> |awk 'NR==2{print $1}'|xargs -I {} git diff {} <file>