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 showist noch einfacher, da dies @~..@die Standardeinstellung ist.
git showdruckt 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 showist, dass Sie bei HEADeinem Zusammenführungs-Commit nicht das bekommen, was Sie erwarten, da das Zusammenführungs-Commit selbst möglicherweise keine Änderungen selbst aufweist. git diff HEAD^ HEADzeigt die tatsächlichen Änderungen zwischen den Versionen
Angenommen, "aktuelle Version" ist das Arbeitsverzeichnis (nicht HEADfestgeschriebene Ä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 diffzeigt nicht bereitgestellte Änderungen. <2> git diff --cachedzeigt inszenierte Änderungen. <3> git diff HEADzeigt 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~1diese Option , um das vorletzte Commit git show HEAD~2usw. 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 HEADaktuellen 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^ HEADsollte eigentlich sein git diff @^!. Siehe git-scm.com/docs/gitrevisions fürr1^!
Verwenden cachedSie 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 )