6 git-diff - Zeige Unterschiede zwischen Eintragungen (commits),
7 Eintragung und Arbeitsbereich, etc
12 'git diff' [<common diff options>] <commit>{0,2} [--] [<path>...]
16 Zeige Unterschiede zwischen zwischen zwei Bäumen, einen Baum und dem
17 Arbeitsbereich, einem Baum und dem Index, oder dem Index und dem
20 'git diff' [--options] [--] [<path>...]::
22 Zeige die Unterschiede zwischen dem Arbeitsbereich und
23 dem Index (Bereich in dem die nächste Eintragung (commit)
24 vorbereitet wird). Mit andern Worten, alle Änderungen im
25 Arbeitsbereich die man noch nicht mit 'git add' oder 'git rm'
26 hinzugefügt hat, aber noch hinzufügen könnte.
28 Werden exakt zwei Dateipfade angegeben und wird zumindest einer davon
29 noch nicht mit git verwaltet, dann werden diese beiten Dateien/Verzeichnisse
30 verglichen. Dieses Verhalten kann auch mit --no-index erzwungen werden.
32 'git diff' [--options] --cached [<commit>] [--] [<path>...]::
34 Mit --cached zeigt git die Änderungen die für die nächste
35 Eintragung (commit) vorbereitet wurden verglichen mit dem
36 angegebenen <commit>. Typischerweise soll mit der letzten
37 Eintragung verglichen werden, wird also kein <commit> angegeben,
38 so wird HEAD verwendet.
40 'git diff' [--options] <commit> [--] [<path>...]::
42 Zeige die Unterschiede zwischen dem Arbeitsbereich und dem
43 angegebenen <commit> (Eintragung). Man kann auch HEAD verwenden
44 um mit der letzten Eintragung zu vergleichen, oder den Namen
45 eines Versionszweiges (branch) um mit der letzten Version dieses
46 Zweiges zu vergleichen.
48 'git diff' [--options] <commit> <commit> [--] [<path>...]::
50 Zeige die Änderungen zwischen zwei Eintragungen (commits).
52 'git diff' [--options] <commit>..<commit> [--] [<path>...]::
54 Dieser Aufruf bewirkt das Gleiche wie der vorige. Wird <commit>
55 an einer Seite weggelassen, so wird HEAD genommen.
57 'git diff' [--options] <commit>\...<commit> [--] [<path>...]::
59 Zeige die Änderungen im Arbeitszweig (branch) der die zweite
60 Eintragung (commit) enthält, ausgehend vom gemeinsamen Ursprung
61 beider <commit>. "git diff A\...B" ist somit equivalent zu
62 "git diff $(git-merge-base A B) B". Bleibt einer der beiden
63 <commit> unerwähnt, wird statt dessen HEAD verwendet.
65 Für alle exotischen Anwendungsfälle sei erwähnt, daß alle <commit>
66 in der obigen Beschreibung (ausgenommen die letzten beiden mit der ".."
67 Notation) auch baumartig (<tree-ish> verwendet werden können.
69 Für eine detailliertere Liste der Möglichkeiten <commit> anzugeben,
70 siehe das Kapitel "SPECIFYING REVISIONS" in linkgit:git-rev-parse[1].
71 Allerdings vergleicht "diff" immer zwei Versionen miteinander und keine
72 Bereiche. Die Angaben ("<commit>..<commit>" und "<commit>\...<commit>")
73 bezeichnen also keine 'Bereiche' wie im "SPECIFYING RANGES" Kapitel
74 in linkgit:git-rev-parse[1] beschrieben.
79 include::diff-options.txt[]
82 Werden Dateipfad Angaben getroffen so schränkt dies den
83 Vergleich (diff) auf diese Dateipfade ein. Handelt es sich um
84 Verzeichnisnamen, so wird der Vergleich auf alle Dateien
85 unterhalb dieser Verzeichnisse angewendet.
89 include::diff-format.txt[]
94 Verschiedene Möglichkeiten den Arbeitsbereich zu testen::
98 $ git diff --cached <2>
102 <1> Änderungen im Arbeitsbereich, die noch nicht im Index für die
103 nächste Eintragung (commit) vorbereitet wurden.
104 <2> Änderungen zwischen dem Index und der letzten Eintragung (commit),
105 also was im Falle von 'git commit' (ohne "-a") eingetragen werden würde.
106 <3> Änderungen im Arbeitsbereich seit der letzten Eintragung (commit),
107 also was mit 'git commit -a' eingetragen werden würde.
109 Vergleich mit beliegigen Eintragungen (commits)::
113 $ git diff HEAD -- ./test <2>
114 $ git diff HEAD^ HEAD <3>
117 <1> Anstatt mit der neuesten Version des aktuellen Versionszweiges
118 (branch) zu vergleichen, verwende die neueste Version des "test"
120 <2> Anstatt mit der neuesten Version des "test" Versionszweiges
121 (branch) zu vergleichen, verwende die neueste Version ('HEAD') des
122 aktuellen Versionszweites. Der Vergleich wird allerdings auf die
123 Datei "./test" eingeschränkt.
124 <3> Vergleiche die Version vor der letzen Eintragung (commit) mit der
127 Versionszweige (branches) vergleichen::
130 $ git diff topic master <1>
131 $ git diff topic..master <2>
132 $ git diff topic...master <3>
135 <1> Vergleich zwischen den neuesten Versionen des 'topic' und des
136 'master' Versionszweiges.
137 <2> Ident mit dem vorhergehenden Beispiel.
138 <3> Änderungen im Versionszweig (branch) 'master', seit der
139 Versionszweig 'topic' davon abgezweigt wurde.
141 Ausgabe von 'diff' einschränken::
144 $ git diff --diff-filter=MRC <1>
145 $ git diff --name-status <2>
146 $ git diff arch/i386 include/asm-i386 <3>
149 <1> Zeige nur Änderungen, Umbenennungen und Kopien, aber
150 keine Löschungen oder Hinzufügungen.
151 <2> Zeige nur Namen und die Art der Änderung aber keine
152 genauen Unterschiede.
153 <3> Schränke den Vergleich auf das benannte Unterverzeichnis ein.
155 Verändern (munging) der 'diff'-Ausgabe::
158 $ git diff --find-copies-harder -B -C <1>
162 <1> Führe extra Iterationen durch um Umbenennungen, Kopien und
163 komplett neugeschriebene Teile zu finden (sehr zeitaufwendig!).
164 <2> Ausgabe in umgekehrter Reihenfolge.
169 Geschrieben von Linus Torvalds <torvalds@osdl.org>
173 Dokumentiert durch Junio C Hamano und der git-list <git@vger.kernel.org>.
177 Teil der linkgit:git[1] suite