2010-12-16 3 views

Antwort

369

Sie suchen nach git diff. Je nach Ihren genauen Situation gibt es drei nützliche Möglichkeiten, es zu benutzen:

# show differences between index and working tree 
# that is, changes you haven't staged to commit 
git diff [filename] 
# show differences between current commit and index 
# that is, what you're about to commit 
# --staged does exactly the same thing, use what you like 
git diff --cached [filename] 
# show differences between current commit and working tree 
git diff HEAD [filename] 

Es wird rekursiv auf Verzeichnisse arbeiten, und wenn keine Wege gegeben sind, zeigt es alle Änderungen.

+1

@ sveilleux2 Nein, einfach git diff ohne Argumente ausführen - wie der letzte Satz der Antwort sagt, wenn keine Pfade angegeben sind, zeigt es alle Änderungen. (Die Klammern in '[filename]' zeigen ein optionales Argument an.) Mit dem '*' lässt du die Shell alle Dateien auflisten. Wenn du in einem Unterverzeichnis bist, bekommst du nur Dinge in diesem Unterverzeichnis (nicht das ganze Repo), und Sie werden Änderungen in versteckten Dateien verpassen. – Cascabel

+0

# zeigen Unterschiede zwischen den aktuellen und begehen Index #, das ist, was Sie über git diff --cached [Dateiname] zu begehen Sie nicht bedeuten: # show Unterschiede zwischen den aktuellen und begehen Index # dass ist, was willst du push_? git diff --cached [Dateiname] – ofarooq

+2

Um zu sehen, Unterschiede nach dem Hinzufügen einer Datei gemacht (d. H. Nach "git add"), tun "git diff --gestaged [Dateiname]" – Sidtharthan

22

Verwendung git-diff:

git diff yourfile 
5

git diff filename

4

git diff

Zeige Änderungen zwischen dem Arbeitsbaum und dem Index oder einen Baum, Änderungen zwischen dem Index und einem Baum, Änderungen zwischen zwei Bäume oder Änderungen zwischen zwei Dateien auf der Festplatte.

+0

Das Zitat ist ein bisschen zu viel - standardmäßig führt es den ersten Vergleich: zwischen Arbeits Baum und Index. – Cascabel

3

Denken Sie daran, Sie verpflichten Änderungen, nicht Dateien.

Aus diesem Grund ist es sehr selten, dass ich git add -p (oder das Magit-Äquivalent) nicht verwende, um meine Änderungen hinzuzufügen.

+0

git tut ** NICHT ** mit Veränderungen umzugehen - zu versuchen, darüber nachzudenken, als ob es die primäre Quelle der Verwirrung und der Fehler ist. git beschäftigt sich mit Snapshots. –

4

Für mich git add -p ist der nützlichste Weg (und ich denke von Git-Entwickler?), Alle nicht geänderten Änderungen zu überprüfen (es zeigt das diff für jede Datei), wählen Sie eine gute Reihe von Änderungen, die mit einem Festschreiben gehen sollte Wenn Sie alle diese Funktionen in Szene gesetzt haben, verwenden Sie git commit und wiederholen Sie den Vorgang für die nächste Festschreibung. Dann können Sie jedes Commit zu einem nützlichen oder sinnvollen Satz von Änderungen machen, selbst wenn sie in verschiedenen Dateien stattgefunden haben. Ich würde auch vorschlagen, einen neuen Zweig für jedes Ticket oder ähnliche Aktivität zu erstellen, und zwischen ihnen wechseln checkout (vielleicht mit git stash, wenn Sie nicht vor dem Wechsel committen wollen), wenn Sie viele schnelle Änderungen tun, kann dies ein Schmerz sein . Vergiss nicht, oft zu verschmelzen.

+0

Also statt git add Dateiname git add -p? – Angela

0

Sie können auch einen git-freundlichen Texteditor verwenden. Sie zeigen Farben auf den Linien, die geändert wurden, eine andere Farbe für hinzugefügte Linien, eine andere Farbe für gelöschte Linien, etc.

Ein guter Texteditor, der das tut, ist GitHub's Atom 1.0.

+0

Bash zeigt Änderungen mit Farben :) – Sander

2
git diff <path>/filename 

Pfad kann Ihre vollständigen Systempfad sein, bis die Datei oder
, wenn Sie in dem Projekt sind die geänderten Dateipfad einfügen auch
für Modifizierte Dateien mit Pfad Verwendung: git status

+0

Es funktioniert !! Vielen Dank –

0

Nun, mein Fall, wenn Sie sich nicht um die Dateiliste kümmern möchten. Zeige sie allen.

Wenn Sie lief bereits git add mit Ihren Dateien Liste:

$ git diff --cached $(git diff --cached --name-only) 

Das gleiche ohne --cached Option hinzugefügt Dateien verwendet werden kann.

$ git diff $(git diff --name-only) 

Git Befehl alias für „Cache“ Option:

$ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)' 
Verwandte Themen