Wie können Sie mit Git den Unterschied zwischen der aktuellen und der letzten Version feststellen?
git diff last version:HEAD
Wie können Sie mit Git den Unterschied zwischen der aktuellen und der letzten Version feststellen?
git diff last version:HEAD
Antworten:
Ich verstehe die Bedeutung von "letzte Version" nicht wirklich.
Da auf das vorherige Commit mit HEAD ^ zugegriffen werden kann, denke ich, dass Sie nach etwas suchen wie:
git diff HEAD^ HEAD
Ab Git 1.8.5 @
ist ein Alias für HEAD
, so dass Sie verwenden können:
git diff @~..@
Folgendes wird auch funktionieren:
git show
Wenn Sie den Unterschied zwischen head und einem Commit kennen möchten, können Sie Folgendes verwenden:
git diff commit_id HEAD
Dadurch wird Ihr Visual Diff-Tool gestartet (falls konfiguriert):
git difftool HEAD^ HEAD
Da der Vergleich mit HEAD standardmäßig ist, können Sie ihn weglassen (wie von Orient hervorgehoben ):
git diff @^
git diff HEAD^
git diff commit_id
~
Zeichen anstelle von verwendet werden muss ^
.@
ist ein Alias für HEAD
. Und da ~
und ^
dasselbe sind, wenn nur ein Commit zurückgeht, finde ich es git diff @~..@
viel einfacher zu tippen.
git show
ist noch einfacher, da dies @~..@
die Standardeinstellung ist.
git show
druckt lediglich die Festschreibungsnachricht aus, gibt zumindest in Git 2.5.4 (Apple Git-61) keinen Unterschied der spezifischen Änderungen aus, sodass dies eigentlich keine Antwort auf die Frage des OP wäre.
git show
ist, dass Sie bei HEAD
einem Zusammenführungs-Commit nicht das bekommen, was Sie erwarten, da das Zusammenführungs-Commit selbst möglicherweise keine Änderungen selbst aufweist. git diff HEAD^ HEAD
zeigt die tatsächlichen Änderungen zwischen den Versionen
Angenommen, "aktuelle Version" ist das Arbeitsverzeichnis (nicht HEAD
festgeschriebene Änderungen ) und "letzte Version" ist (letzte festgeschriebene Änderungen für den aktuellen Zweig), tun Sie dies einfach
git diff HEAD
Das Guthaben für Folgendes geht an den Benutzer Cerran
.
Und wenn Sie beim Festschreiben immer den Staging-Bereich überspringen -a
, können Sie ihn einfach verwenden git diff
.
Zusammenfassung
git diff
zeigt nicht bereitgestellte Änderungen.git diff --cached
zeigt inszenierte Änderungen.git diff HEAD
zeigt alle Änderungen (sowohl inszeniert als auch nicht inszeniert).Quelle: git-diff (1) Handbuchseite - Cerran
-a
, können Sie ihn einfach verwenden git diff
. <1> git diff
zeigt nicht bereitgestellte Änderungen. <2> git diff --cached
zeigt inszenierte Änderungen. <3> git diff HEAD
zeigt alle Änderungen (sowohl inszeniert als auch nicht inszeniert). Quelle: git-diff (1) Handbuchseite
Wie in einem Kommentar von amalloy erwähnt , können Sie mit "aktuelle und letzte Version" das letzte Commit und das Commit davor meinen, das Sie einfach verwenden können
git show
git show HEAD~1
diese Option , um das vorletzte Commit git show HEAD~2
usw. für ältere Commits anzuzeigen. Zeigen Sie nur eine einzelne Datei über git show HEAD~2 my_file
.
Unterschied zwischen vorletztem Commit und letztem Commit (plus ggf. aktuellem Status):
git diff HEAD~
oder sogar (einfacher zu tippen)
git diff @~
Wo @
ist das Synonym für den HEAD
aktuellen Zweig und ~
bedeutet "gib mir das Elternteil der erwähnten Revision".
git diff HEAD^
(eher als die äquivalente HEAD~
Form). Es ist ein bisschen einfacher, sich an einen "alten
~
und @
Mittel.
diff HEAD^ HEAD
sollte eigentlich sein git diff @^!
. Siehe git-scm.com/docs/gitrevisions fürr1^!
Verwenden cached
Sie einfach das Flag, wenn Sie hinzugefügt haben, aber noch keine Festschreibung vorgenommen haben:
git diff --cached --color
Verwenden Sie zunächst " git log
", um die Protokolle für das Repository aufzulisten.
Wählen Sie nun die beiden Festschreibungs-IDs aus, die sich auf die beiden Festschreibungen beziehen. Sie möchten die Unterschiede sehen ( Beispiel - Top Commit und einige ältere Commits (gemäß Ihrer Erwartung an die aktuelle Version und einige alte Versionen) ).
Verwenden Sie als Nächstes:
git diff <commit_id1> <commit_id2>
oder
git difftool <commit_id1> <commit_id2>
Wenn HEAD auf das oberste Commit hinweist, können Sie Folgendes tun:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Unterschied zwischen dem ersten und dem zweiten Commit:
git diff HEAD~1 HEAD
Unterschied zwischen erstem und drittem Commit:
git diff HEAD~2 HEAD
Unterschied zwischen zweitem und drittem Commit:
git diff HEAD~2 HEAD~1
Und so weiter...
Ich verwende Bitbucket mit der Eclipse- IDE und dem installierten Eclipse EGit- Plugin.
Ich vergleiche eine Datei aus einer beliebigen Version ihres Verlaufs (wie SVN ).
Menü Projekt Explorer → Datei → Rechtsklick → Team → Im Verlauf anzeigen .
Dadurch wird der Verlauf aller Änderungen in dieser Datei angezeigt. CtrlKlicken Sie nun auf und wählen Sie zwei beliebige Versionen aus → "Vergleichen Sie miteinander" .
Dies funktioniert auch für Tags (entfernen Sie die 'uniq' unten und andere Teile, wenn Sie alle Änderungen sehen müssen):
git diff v1.58 HEAD
Das Folgende ist dasselbe, und das könnte für die kontinuierliche Integration (CI) von Mikrodiensten in einem monolithischen Repository nützlich sein :
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Gutschrift - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )