2619 Stimmen

Wie zeige ich die Änderungen an, die durchgeführt wurden?

Ich habe ein paar Änderungen für die Übergabe bereitgestellt. Wie kann ich die Differenz aller Dateien sehen, die für die nächste Übergabe bereitgestellt werden? Ich bin mir bewusst, dass Git-Status aber ich würde gerne die tatsächlichen Diffs sehen - nicht nur die Namen der Dateien, die bereitgestellt werden.

Ich sah, dass die git-diff(1) Manpage sagt

git diff [--options] [--] [ ]

Dieses Formular dient dazu, die von Ihnen vorgenommenen Änderungen in Bezug auf den Index (Bereitstellungsbereich für die nächste Übertragung) anzuzeigen. Mit anderen Worten, die Unterschiede sind das, was Sie könnte git anweisen, den Index weiter zu ergänzen, aber Sie haben es noch nicht getan. Sie können diese Änderungen mit git-add(1) durchführen.

Leider kann ich das nicht ganz nachvollziehen. Es muss doch einen praktischen Einzeiler geben, für den ich einen Alias erstellen kann, oder?

3169voto

CB Bailey Punkte 693084

Es sollte einfach sein:

git diff --cached

--cached bedeutet, dass die Änderungen im Cache/Index (d. h. abgestufte Änderungen) gegenüber dem aktuellen HEAD . --staged ist ein Synonym für --cached .

--staged y --cached verweist nicht auf HEAD nur Unterschied in Bezug auf HEAD . Wenn Sie eine Auswahl treffen, die Sie mit git add --patch (o git add -p ), --staged wird das zurückgeben, was bereitgestellt wird.

1766voto

Abizern Punkte 137651

Eine einfache Grafik verdeutlicht dies:

Simple Git diffs

Git-Diff

Zeigt die Änderungen zwischen dem Arbeitsverzeichnis und dem Index an. Dies zeigt, was geändert wurde, ist aber nicht für eine Übertragung vorgesehen.

git diff --cached

Zeigt die Änderungen zwischen dem Index und dem HEAD (dem letzten Commit für diesen Zweig). Dies zeigt, was zum Index hinzugefügt und für eine Übertragung bereitgestellt wurde.

git diff HEAD

Zeigt alle Änderungen zwischen dem Arbeitsverzeichnis und HEAD (einschließlich der Änderungen im Index). Dies zeigt alle Änderungen seit der letzten Übertragung an, unabhängig davon, ob sie für die Übertragung bereitgestellt wurden oder nicht.

Auch :

Es gibt ein paar mehr Details auf 365Git.

73voto

VonC Punkte 1117238

Beachten Sie, dass git status -v également zeigt die inszenierten Veränderungen! (was bedeutet, dass Sie Staged---Änderungen haben müssen. git add -- einige Änderungen. Keine stufenweisen Änderungen, kein Diff mit git status -v .
Sie tut dies, weil Git 1.2.0, Februar 2006 )

In seiner langen Form (Standard), git status hat eine undokumentierte "verbose"-Option, die tatsächlich den Unterschied zwischen HEAD und index anzeigt.

Und sie wird demnächst noch vollständiger werden: siehe " Sowohl Staged als auch Working Tree in Git Diff anzeigen? " (git 2.3.4+, Q2 2015):

git status -v -v

58voto

krlmlr Punkte 23448

Wenn Sie an einer visuellen Seite-an-Seite-Ansicht interessiert sind, können Sie die diffus Visual Diff Tool kann das tun. Es zeigt sogar drei Bereiche an, wenn einige, aber nicht alle Änderungen gestaffelt sind. Im Falle von Konflikten werden sogar vier Fenster angezeigt.

Screenshot of diffuse with staged and unstaged edits

Rufen Sie es mit

diffuse -m

in Ihrer Git-Arbeitskopie.

Wenn Sie mich fragen, der beste visuelle Unterschied, den ich seit einem Jahrzehnt gesehen habe. Außerdem ist es nicht spezifisch für Git: Es arbeitet mit einer Vielzahl von anderen VCS zusammen, darunter SVN, Mercurial, Bazaar, ...

Siehe auch: Sowohl Staged als auch Working Tree in Git Diff anzeigen?

47voto

Goyal Vicky Punkte 1081

Für den Vergleich zwischen Staging Area und Repository (letzte Übertragung) verwenden Sie

$ git diff --staged

Der Befehl vergleicht Ihre staged( $ git add fileName ) Änderungen an Ihrer letzten Übertragung. Wenn Sie sehen wollen, welche Änderungen in den nächsten Commit einfließen werden, können Sie git diff --staged verwenden. Dieser Befehl vergleicht Ihre bereitgestellten Änderungen mit Ihrem letzten Commit.

Für den Vergleich zwischen Working und Staging verwenden Sie

$ git diff 

Der Befehl vergleicht den Inhalt Ihres Arbeitsverzeichnisses mit dem Inhalt Ihres Staging-Bereichs. Es ist wichtig zu wissen, dass git diff selbst nicht alle Änderungen anzeigt, die seit dem letzten Commit gemacht wurden - nur die Änderungen, die noch nicht in den Staging-Bereich übertragen wurden. Wenn Sie alle Ihre Änderungen in den Bereitstellungsbereich übertragen haben ( $ git add fileName ), wird git diff keine Ausgabe liefern.

Auch wenn Sie eine Datei( $ git add fileName ) und sie dann bearbeiten, können Sie git diff verwenden, um die Änderungen in der Datei zu sehen, die bereitgestellt werden, und die Änderungen, die nicht bereitgestellt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X