Wenn Sie GitHub für den Cloud-Standort Ihres Repos verwenden, ist dies sehr einfach: Navigieren Sie zu Ihrem Projekt und klicken Sie auf die Überschrift "Commits" in der Tabelle, in der Ihr Projekt angezeigt wird
David Lundquist,
1
Die Bedeutung von "aktuelle und letzte Version" sollte in der Frage wirklich geklärt werden.
Faintsignal
Antworten:
1170
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
Warnungen
@ScottF und @Panzercrisis erklären in den Kommentaren, dass unter Windows das ~Zeichen anstelle von verwendet werden muss ^.
Ich wollte so etwas wie eine festgelegte Version und eine Version davor ... Git Diff Head Head-1
Rajeev
7
Ab Git 1.8.5 @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.
Andrew
80
@ Andrew git showist noch einfacher, da dies @~..@die Standardeinstellung ist.
Amalloy
3
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.
user1944491
1
Das Problem dabei 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
RubenLaguna
157
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).
Und wenn Sie beim Festschreiben immer den Staging-Bereich überspringen -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
Cerran
1
Dies sollte die akzeptierte Antwort sein, da sie die Absicht der Frage beantwortet.
Tgoneil
Wie heißt "die aktuelle nicht bereitgestellte Version" in Git? Gibt es eigentlich einen Namen?
Mathieu CAROFF
118
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
Verwenden Sie 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.
Florian Brucker
60
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".
Ich mag git diff HEAD^(eher als die äquivalente HEAD~Form). Es ist ein bisschen einfacher, sich an einen "alten
Idioten
3
Die Karotte ist in einigen Terminals ein Problem. Schön, die Option zu haben
light24bulbs
1
Antwort könnte erklären , was die verbessert werden ~und @Mittel.
Bob Stein
1
Wenn wir nur überprüfen möchten, was beim letzten Festschreiben festgeschrieben wurde, verwenden Sie dies nicht (da sich schmutzige Änderungen auf das Diff auswirken). Eine kürzere Syntax diff HEAD^ HEADsollte eigentlich sein git diff @^!. Siehe git-scm.com/docs/gitrevisions fürr1^!
Johnny Wong
@ JohnnyWong Vielen Dank für die Klarstellung. Ich erwähnte den "aktuellen Zustand", um die Leser nicht zu verwirren.
Tomilov Anatoliy
53
Sie können es auch so machen:
Vergleichen Sie mit dem vorherigen Commit
git diff --name-status HEAD~1..HEAD
Vergleichen Sie mit den aktuellen und vorherigen zwei Commits
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) ).
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 :
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:
Ab Git 1.8.5
@
ist ein Alias fürHEAD
, so dass Sie verwenden können:Folgendes wird auch funktionieren:
Wenn Sie den Unterschied zwischen head und einem Commit kennen möchten, können Sie Folgendes verwenden:
Dadurch wird Ihr Visual Diff-Tool gestartet (falls konfiguriert):
Da der Vergleich mit HEAD standardmäßig ist, können Sie ihn weglassen (wie von Orient hervorgehoben ):
Warnungen
~
Zeichen anstelle von verwendet werden muss^
.quelle
@
ist ein Alias fürHEAD
. Und da~
und^
dasselbe sind, wenn nur ein Commit zurückgeht, finde ich esgit 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 beiHEAD
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 VersionenAngenommen, "aktuelle Version" ist das Arbeitsverzeichnis (nicht
HEAD
festgeschriebene Änderungen ) und "letzte Version" ist (letzte festgeschriebene Änderungen für den aktuellen Zweig), tun Sie dies einfachDas 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 verwendengit 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
quelle
-a
, können Sie ihn einfach verwendengit 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) HandbuchseiteWie 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
quelle
git show HEAD~1
diese Option , um das vorletzte Commitgit show HEAD~2
usw. für ältere Commits anzuzeigen. Zeigen Sie nur eine einzelne Datei übergit show HEAD~2 my_file
.Unterschied zwischen vorletztem Commit und letztem Commit (plus ggf. aktuellem Status):
oder sogar (einfacher zu tippen)
Wo
@
ist das Synonym für denHEAD
aktuellen Zweig und~
bedeutet "gib mir das Elternteil der erwähnten Revision".quelle
git diff HEAD^
(eher als die äquivalenteHEAD~
Form). Es ist ein bisschen einfacher, sich an einen "alten~
und@
Mittel.diff HEAD^ HEAD
sollte eigentlich seingit diff @^!
. Siehe git-scm.com/docs/gitrevisions fürr1^!
Sie können es auch so machen:
Vergleichen Sie mit dem vorherigen Commit
Vergleichen Sie mit den aktuellen und vorherigen zwei Commits
quelle
Verwenden
cached
Sie einfach das Flag, wenn Sie hinzugefügt haben, aber noch keine Festschreibung vorgenommen haben:quelle
Schnell und einfach, vorausgesetzt, Sie sind im Meister:
Beispiel:
quelle
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:
oder
quelle
Wenn HEAD auf das oberste Commit hinweist, können Sie Folgendes tun:
Unterschied zwischen dem ersten und dem zweiten Commit:
Unterschied zwischen erstem und drittem Commit:
Unterschied zwischen zweitem und drittem Commit:
Und so weiter...
quelle
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" .
quelle
Dies funktioniert auch für Tags (entfernen Sie die 'uniq' unten und andere Teile, wenn Sie alle Änderungen sehen müssen):
Das Folgende ist dasselbe, und das könnte für die kontinuierliche Integration (CI) von Mikrodiensten in einem monolithischen Repository nützlich sein :
(Gutschrift - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )
quelle