Zeige „git diff HEAD~1“ der Datei, die in den letzten Commits nicht berührt wurde

Zeige „git diff HEAD~1“ der Datei, die in den letzten Commits nicht berührt wurde

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, filewü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, HEADjedoch 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> 

verwandte Informationen