@@ -15,136 +15,135 @@ Rückblick
15
15
Filtern und sortieren
16
16
~~~~~~~~~~~~~~~~~~~~~
17
17
18
- .. glossary ::
18
+ :samp: `$ git log [-n { COUNT } ] `
19
+ listet die Commit-Historie des aktuellen Zweiges auf.
19
20
20
- :samp: ` $ git log [-n { COUNT } ] `
21
- listet die Commit-Historie des aktuellen Zweiges auf.
21
+ `` -n ` `
22
+ beschränkt die Anzahl der Commits auf die angegebene Zahl .
22
23
23
- `` -n ` `
24
- beschränkt die Anzahl der Commits auf die angegebene Zahl .
24
+ :samp: ` $ git log [--after=" { YYYY-MM-DD } "] [--before=" { YYYY-MM-DD } "] `
25
+ Commit-Historie gefiltert nach Datum .
25
26
26
- :samp: ` $ git log [--after=" { YYYY-MM-DD } "] [--before=" { YYYY-MM-DD } "] `
27
- Commit-Historie gefiltert nach Datum .
27
+ Auch relative Angaben wie `` 1 week ago `` oder `` yesterday `` sind
28
+ zulässig .
28
29
29
- Auch relative Angaben wie `` 1 week ago `` oder `` yesterday `` sind
30
- zulässig .
30
+ :samp: ` $ git log --author=" { VEIT } " `
31
+ filtert die Commit-Historie nach Autor*innen .
31
32
32
- :samp: ` $ git log --author=" { VEIT } " `
33
- filtert die Commit-Historie nach Autor*innen.
33
+ Es kann auch nach mehreren Autor*innen gleichzeitig gesucht werden,
34
+ :abbr: ` z.B. ( zum Beispiel ) `:
34
35
35
- Es kann auch nach mehreren Autor*innen gleichzeitig gesucht werden,
36
- :abbr: `z.B. ( zum Beispiel ) `:
36
+ :samp: `$ git log --author="{ VEIT\| VSC } " `
37
37
38
- :samp: `$ git log --author="{ VEIT\| VSC } " `
38
+ :samp: `$ git log --grep="{ TERM } " [-i] `
39
+ filtert die Commit-Historie nach regulären Ausdrücken in der
40
+ Commit-Nachricht.
39
41
40
- :samp: `$ git log --grep="{ TERM } " [-i] `
41
- filtert die Commit-Historie nach regulären Ausdrücken in der
42
- Commit-Nachricht.
42
+ ``-i ``
43
+ ignoriert Groß- und Kleinschreibung.
43
44
44
- `` -i ` `
45
- ignoriert Groß- und Kleinschreibung .
45
+ :samp: ` $ git log -S" { FOO } " [-i] `
46
+ filtert Commits nach bestimmten Zeilen im Quellcode .
46
47
47
- :samp: ` $ git log -S" { FOO } " [-i] `
48
- filtert Commits nach bestimmten Zeilen im Quellcode .
48
+ `` -i ` `
49
+ ignoriert Groß- und Kleinschreibung .
49
50
50
- `` -i ` `
51
- ignoriert Groß- und Kleinschreibung .
51
+ :samp: ` $ git log -G" { BA* } " `
52
+ filtert Commits nach regulären Ausdrücken im Quellcode .
52
53
53
- :samp: `$ git log -G" { BA* } " `
54
- filtert Commits nach regulären Ausdrücken im Quellcode .
54
+ :samp: `$ git log -- { PATH/TO/FILE } `
55
+ filtert die Commit-Historie nach bestimmten Dateien .
55
56
56
- :samp: `$ git log -- { PATH/TO/FILE } `
57
- filtert die Commit-Historie nach bestimmten Dateien.
57
+ :samp: `$ git log { MAIN } ..{ FEATURE } `
58
+ filtert nach unterschiedlichen Commits in verschiedenen Zweigen
59
+ (Branches), in unserem Fall zwischen den Branches :samp: `MAIN ` und
60
+ :samp: `FEATURE `.
61
+
62
+ Dies ist jedoch nicht dasselbe wie :samp: `git log { FEATURE } ..{ MAIN } `.
63
+ Nehmen wir folgendes Beispiel.
64
+
65
+ .. code-block ::
66
+
67
+ A - B main
68
+ \
69
+ C - D feature
58
70
59
71
:samp: `$ git log { MAIN } ..{ FEATURE } `
60
- filtert nach unterschiedlichen Commits in verschiedenen Zweigen
61
- (Branches), in unserem Fall zwischen den Branches :samp: `MAIN ` und
62
- :samp: `FEATURE `.
63
-
64
- Dies ist jedoch nicht dasselbe wie :samp: `git log { FEATURE } ..{ MAIN } `.
65
- Nehmen wir folgendes Beispiel.
66
-
67
- .. code-block ::
68
-
69
- A - B main
70
- \
71
- C - D feature
72
-
73
- :samp: `$ git log { MAIN } ..{ FEATURE } `
74
- zeigt Änderungen in :samp: `{ FEATURE } ` an, die nicht in :samp: `{ MAIN } `
75
- enthalten sind, also die Commits ``C `` und ``D ``.
76
- :samp: `$ git log { FEATURE } ..{ MAIN } `
77
- zeigt Änderungen in :samp: `{ MAIN } ` an, die nicht in :samp: `{ FEATURE } `
78
- enthalten sind, also den Commit ``B ``.
79
- :samp: `$ git log { MAIN } ...{ FEATURE } `
80
- zeigt die Änderungen auf beiden Seiten an, also die Commits ``B ``,
81
- ``C `` und ``D ``.
82
-
83
- :samp: `$ git log --follow { PATH/TO/FILE } `
84
- Dies sorgt dafür, dass das Log Änderungen an einer einzelnen Datei
85
- anzeigt, auch wenn diese umbenannt oder verschoben wurde.
86
-
87
- Ihr könnt ``--follow `` für einzelne Dateiaufrufe standardmäßig
88
- aktivieren, indem ihr die Option ``log.follow `` in eurer globalen
89
- Konfiguration aktiviert:
90
-
91
- .. code-block :: console
92
-
93
- $ git config --global log.follow true
94
-
95
- Dann müsst ihr nicht mehr ``--follow `` angeben, sondern nur noch den
96
- Dateinamen.
97
-
98
- :samp: `$ git log -L { LINE_START_INT|LINE_START_REGEX } ,{ LINE_END_INT|LINE_END_REGEX } :{ PATH/TO/FILE } `
99
- :samp: `$ git log -L :{ FUNCNAME_REGEX } :{ PATH/TO/FILE } `
100
- Mit der Option `-L
101
- <https://git-scm.com/docs/git-log#Documentation/git-log.txt--Lltstartgtltendgtltfilegt> `_
102
- könnt ihr eine verfeinerte Suche durchführen, indem ihr das Log nur eines
103
- Teils einer Datei überprüft. Mit dieser Funktion könnt ihr die Historie
104
- einer einzelnen Funktion, einer Klasse oder eines anderen Code-Blocks
105
- gründlich durchforsten. Sie ist ideal, um herauszufinden, wann etwas
106
- erstellt und wie es geändert wurde, so dass ihr es getrost korrigieren,
107
- refaktorisieren oder löschen könnt.
108
-
109
- Für umfassendere Untersuchungen könnt ihr auch mehrere Blöcke verfolgen.
110
- Hierfür könnt ihr mehrere ``-L ``-Optionen auf einmal verwenden.
111
-
112
- :samp: `$ git log --reverse `
113
- Üblicherweise zeigt das Protokoll den neuesten Commit zuerst an. Ihr
114
- könnt dies mit ``--reverse `` umkehren. Dies ist besonders nützlich, wenn
115
- ihr mit den bereits erwähnten Optionen ``-S `` und ``-G `` untersucht.
116
- Indem ihr die Reihenfolge der Commits umkehrt, könnt ihr schnell den
117
- ersten Commit finden, der eine bestimmte Zeichenfolge zur Codebasis
118
- hinzugefügt hat.
72
+ zeigt Änderungen in :samp: `{ FEATURE } ` an, die nicht in :samp: `{ MAIN } `
73
+ enthalten sind, also die Commits ``C `` und ``D ``.
74
+ :samp: `$ git log { FEATURE } ..{ MAIN } `
75
+ zeigt Änderungen in :samp: `{ MAIN } ` an, die nicht in :samp: `{ FEATURE } `
76
+ enthalten sind, also den Commit ``B ``.
77
+ :samp: `$ git log { MAIN } ...{ FEATURE } `
78
+ zeigt die Änderungen auf beiden Seiten an, also die Commits ``B ``,
79
+ ``C `` und ``D ``.
80
+
81
+ :samp: `$ git log --follow { PATH/TO/FILE } `
82
+ Dies sorgt dafür, dass das Log Änderungen an einer einzelnen Datei
83
+ anzeigt, auch wenn diese umbenannt oder verschoben wurde.
84
+
85
+ Ihr könnt ``--follow `` für einzelne Dateiaufrufe standardmäßig
86
+ aktivieren, indem ihr die Option ``log.follow `` in eurer globalen
87
+ Konfiguration aktiviert:
88
+
89
+ .. code-block :: console
90
+
91
+ $ git config --global log.follow true
92
+
93
+ Dann müsst ihr nicht mehr ``--follow `` angeben, sondern nur noch den
94
+ Dateinamen.
95
+
96
+ ``$ git log -L ``
97
+ Mit der Option `-L
98
+ <https://git-scm.com/docs/git-log#Documentation/git-log.txt--Lltstartgtltendgtltfilegt> `_
99
+ könnt ihr eine verfeinerte Suche durchführen, indem ihr das Log nur eines
100
+ Teils einer Datei überprüft:
101
+
102
+ * :samp: `$ git log -L { LINE_START_INT|LINE_START_REGEX } ,{ LINE_END_INT|LINE_END_REGEX } :{ PATH/TO/FILE } `
103
+ * :samp: `$ git log -L :{ FUNCNAME_REGEX } :{ PATH/TO/FILE } `
104
+
105
+ Mit dieser Funktion könnt ihr die Historie einer einzelnen Funktion, einer
106
+ Klasse oder eines anderen Code-Blocks gründlich durchforsten. Sie ist ideal,
107
+ um herauszufinden, wann etwas erstellt und wie es geändert wurde, so dass ihr
108
+ es getrost korrigieren, refaktorisieren oder löschen könnt.
109
+
110
+ Für umfassendere Untersuchungen könnt ihr auch mehrere Blöcke verfolgen.
111
+ Hierfür könnt ihr mehrere ``-L ``-Optionen auf einmal verwenden.
112
+
113
+ :samp: `$ git log --reverse `
114
+ Üblicherweise zeigt das Protokoll den neuesten Commit zuerst an. Ihr
115
+ könnt dies mit ``--reverse `` umkehren. Dies ist besonders nützlich, wenn
116
+ ihr mit den bereits erwähnten Optionen ``-S `` und ``-G `` untersucht.
117
+ Indem ihr die Reihenfolge der Commits umkehrt, könnt ihr schnell den
118
+ ersten Commit finden, der eine bestimmte Zeichenfolge zur Codebasis
119
+ hinzugefügt hat.
119
120
120
121
Ansicht
121
122
~~~~~~~
122
123
123
- .. glossary ::
124
-
125
- :samp: `$ git log --stat --patch|-p `
126
- ``--stat ``
127
- Den üblichen Metadaten wird noch eine eine Zusammenfassung der Anzahl
128
- der geänderten Zeilen pro Datei hinzugefügt.
129
- ``--patch|-p ``
130
- ergänzt die Ausgabe um den vollständigen Commit-Diff.
131
-
132
- :samp: `$ git log --oneline --decorate --graph --all|{ FEATURE } `
133
- anzeigen des Verlaufsdiagramms mit Referenzen, ein Commit pro Zeile.
134
-
135
- ``--oneline ``
136
- Ein Commit pro Zeile.
137
- ``--decorate ``
138
- Die Präfixe ``refs/heads/ ``, ``refs/tags/ `` und ``refs/remotes/ ``
139
- werden nicht ausgegeben.
140
- ``--graph ``
141
- Üblicherweise *glättet * das Log historische Zweige und zeigt Commits
142
- nacheinander an. Damit wird die parallele Struktur der Historie beim
143
- Zusammenführen von Zweigen verborgen. ``--graph `` stellt den Verlauf
144
- der Zweige in ASCII-Art dar.
145
- :samp: `--all|{ FEATURE } `
146
- ``--all `` zeigt das Log für alle Zweige; :samp: `{ FEATURE } ` zeigt nur
147
- die Commits dieses Zweiges an.
124
+ :samp: `$ git log --stat --patch|-p `
125
+ ``--stat ``
126
+ Den üblichen Metadaten wird noch eine eine Zusammenfassung der Anzahl
127
+ der geänderten Zeilen pro Datei hinzugefügt.
128
+ ``--patch|-p ``
129
+ ergänzt die Ausgabe um den vollständigen Commit-Diff.
130
+
131
+ :samp: `$ git log --oneline --decorate --graph --all|{ FEATURE } `
132
+ anzeigen des Verlaufsdiagramms mit Referenzen, ein Commit pro Zeile.
133
+
134
+ ``--oneline ``
135
+ Ein Commit pro Zeile.
136
+ ``--decorate ``
137
+ Die Präfixe ``refs/heads/ ``, ``refs/tags/ `` und ``refs/remotes/ ``
138
+ werden nicht ausgegeben.
139
+ ``--graph ``
140
+ Üblicherweise *glättet * das Log historische Zweige und zeigt Commits
141
+ nacheinander an. Damit wird die parallele Struktur der Historie beim
142
+ Zusammenführen von Zweigen verborgen. ``--graph `` stellt den Verlauf
143
+ der Zweige in ASCII-Art dar.
144
+ :samp: `--all|{ FEATURE } `
145
+ ``--all `` zeigt das Log für alle Zweige; :samp: `{ FEATURE } ` zeigt nur
146
+ die Commits dieses Zweiges an.
148
147
149
148
.. _reflog :
150
149
@@ -164,50 +163,49 @@ Schauen wir uns die Grundlagen der Verwendung von Reflog und einige typische
164
163
Anwendungsfälle an.
165
164
166
165
.. warning ::
167
- Das Reflog ist nur Teil eures lokalen Repository. Wenn ihr ein Projektarchiv
168
- löscht und neu klont, wird der neue Klon ein frisches, leeres Reflog haben.
166
+ Das Reflog ist nur Teil eures lokalen Repository. Wenn ihr ein Projektarchiv
167
+ löscht und neu klont, wird der neue Klon ein frisches, leeres Reflog haben.
169
168
170
169
Das Reflog für ``HEAD `` anzeigen
171
170
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
172
171
173
- .. glossary ::
174
-
175
- :samp: `$ git reflog `
176
- Wenn keine Optionen angegeben sind, zeigt der Befehl standardmäßig das
177
- Reflog für ``HEAD `` an. Es ist die Abkürzung für ``git reflog show
178
- HEAD ``. git reflog hat weitere Unterbefehle zur Verwaltung des Logs, aber
179
- ``show `` ist der Standardbefehl, wenn kein Unterbefehl übergeben wird.
180
-
181
- .. code-block :: console
182
- :linenos:
183
-
184
- $ git reflog
185
- 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{0}: merge my-feature-branch: Fast-forward
186
- 900844a HEAD@{1}: checkout: moving from my-feature-branch to main
187
- 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{2}: commit (amend): Add my feature and more
188
- 982d93a HEAD@{3}: commit: Add my feature
189
- 900844a HEAD@{4}: checkout: moving from main to my-feature-branch
190
- 900844a HEAD@{5}: commit (initial): Initial commit
191
-
192
- * Die Ausgabe ist ziemlich dicht.
193
- * Jede Zeile ist ein Reflog-Eintrag, der neueste zuerst.
194
- * Die Zeilen beginnen mit dem abgekürzten SHA des entsprechenden Commits,
195
- :abbr: `z.B. ( zum Beispiel ) ` ``12bc4d4 ``.
196
- * Der erste Eintrag ist das, worauf ``HEAD `` derzeit verweist: ``(HEAD -> main,
197
- my-feature) ``.
198
- * Die Namen ``HEAD@\{N} `` sind alternative Referenzen für die angegebenen
199
- Commits. ``N `` ist die Anzahl der zurückgehenden reflog-Einträge.
200
- * Der restliche Text beschreibt die Änderung. Oben könnt ihr mehrere Arten von
201
- Einträgen sehen:
202
-
203
- * :samp: `commit: { MESSAGE } ` für Commits
204
- * :samp: `commit (amend): { MESSAGE } ` für eine Commit-Änderung
205
- * :samp: `checkout: moving from { SRC } TO { DST } ` für einen Zweigwechsel
206
-
207
- Es gibt viele weitere mögliche Arten von Einträgen. Der Text sollte so
208
- beschreibend sein, dass ihr den Vorgang auch ohne Nachschlagen in der
209
- Dokumentation nachvollziehen könnt. In den meisten Fällen werdet ihr solche
210
- Reflog-Einträge durchsehen wollen, um den entsprechenden Commit SHA zu finden.
172
+ :samp: `$ git reflog `
173
+ Wenn keine Optionen angegeben sind, zeigt der Befehl standardmäßig das
174
+ Reflog für ``HEAD `` an. Es ist die Abkürzung für ``git reflog show
175
+ HEAD ``. git reflog hat weitere Unterbefehle zur Verwaltung des Logs, aber
176
+ ``show `` ist der Standardbefehl, wenn kein Unterbefehl übergeben wird.
177
+
178
+ .. code-block :: console
179
+ :linenos:
180
+
181
+ $ git reflog
182
+ 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{0}: merge my-feature-branch: Fast-forward
183
+ 900844a HEAD@{1}: checkout: moving from my-feature-branch to main
184
+ 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{2}: commit (amend): Add my feature and more
185
+ 982d93a HEAD@{3}: commit: Add my feature
186
+ 900844a HEAD@{4}: checkout: moving from main to my-feature-branch
187
+ 900844a HEAD@{5}: commit (initial): Initial commit
188
+
189
+ * Die Ausgabe ist ziemlich dicht.
190
+ * Jede Zeile ist ein Reflog-Eintrag, der neueste zuerst.
191
+ * Die Zeilen beginnen mit dem abgekürzten SHA des entsprechenden Commits,
192
+ :abbr: `z.B. ( zum Beispiel ) ` ``12bc4d4 ``.
193
+ * Der erste Eintrag ist das, worauf ``HEAD `` derzeit verweist: ``(HEAD ->
194
+ main, my-feature) ``.
195
+ * Die Namen ``HEAD@\{N} `` sind alternative Referenzen für die angegebenen
196
+ Commits. ``N `` ist die Anzahl der zurückgehenden reflog-Einträge.
197
+ * Der restliche Text beschreibt die Änderung. Oben könnt ihr mehrere Arten
198
+ von Einträgen sehen:
199
+
200
+ * :samp: `commit: { MESSAGE } ` für Commits
201
+ * :samp: `commit (amend): { MESSAGE } ` für eine Commit-Änderung
202
+ * :samp: `checkout: moving from { SRC } TO { DST } ` für einen Zweigwechsel
203
+
204
+ Es gibt viele weitere mögliche Arten von Einträgen. Der Text sollte so
205
+ beschreibend sein, dass ihr den Vorgang auch ohne Nachschlagen in der
206
+ Dokumentation nachvollziehen könnt. In den meisten Fällen werdet ihr solche
207
+ Reflog-Einträge durchsehen wollen, um den entsprechenden Commit SHA zu
208
+ finden.
211
209
212
210
Das Reflog für einen Zweig anzeigen
213
211
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -243,13 +241,13 @@ Und für absolute Zeitstempel könnt ihr auch ``--date=iso`` verwenden:
243
241
244
242
.. code-block :: console
245
243
246
- $ git reflog --date=iso
247
- 12bc4d4 (HEAD -> main, my-feature) HEAD@{2024-01-11 15:26:53 +0100}: merge my-feature-branch: Fast-forward
248
- 900844a HEAD@{2024-01-11 15:26:47 +0100}: checkout: moving from my-feature-branch to main
249
- 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{2024-01-11 15:26:11 +0100}: commit (amend): Add my feature and more
250
- 982d93a HEAD@{2024-01-11 15:25:38 +0100}: commit: Add my feature
251
- 900844a HEAD@{2024-01-11 15:24:37 +0100}: checkout: moving from main to my-feature-branch
252
- 900844a HEAD@{2024-01-11 15:23:56 +0100}: commit (initial): Initial commit
244
+ $ git reflog --date=iso
245
+ 12bc4d4 (HEAD -> main, my-feature) HEAD@{2024-01-11 15:26:53 +0100}: merge my-feature-branch: Fast-forward
246
+ 900844a HEAD@{2024-01-11 15:26:47 +0100}: checkout: moving from my-feature-branch to main
247
+ 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{2024-01-11 15:26:11 +0100}: commit (amend): Add my feature and more
248
+ 982d93a HEAD@{2024-01-11 15:25:38 +0100}: commit: Add my feature
249
+ 900844a HEAD@{2024-01-11 15:24:37 +0100}: checkout: moving from main to my-feature-branch
250
+ 900844a HEAD@{2024-01-11 15:23:56 +0100}: commit (initial): Initial commit
253
251
254
252
Übergebt alle Optionen, die ``git log `` unterstützt
255
253
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -260,10 +258,10 @@ feature}` erwähnt wird, ohne die Groß- und Kleinschreibung zu berücksichtigen
260
258
261
259
.. code-block :: console
262
260
263
- $ git reflog -i --grep 'my feature'
264
- 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{0}: merge my-feature: Fast-forward
265
- 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{2}: commit (amend): Add my feature and more
266
- 982d93a HEAD@{3}: commit: Add my feature
261
+ $ git reflog -i --grep 'my feature'
262
+ 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{0}: merge my-feature: Fast-forward
263
+ 12bc4d4 (HEAD -> main, my-feature-branch) HEAD@{2}: commit (amend): Add my feature and more
264
+ 982d93a HEAD@{3}: commit: Add my feature
267
265
268
266
Beachtet den Verfall von Einträgen
269
267
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -273,10 +271,10 @@ Reflog-Einträge verfallen nach einer gewissen Zeit, wenn Git den automatischen
273
271
Diese Verfallszeit wird durch zwei ``gc.* ``-Optionen gesteuert:
274
272
275
273
``gc.reflogExpire ``
276
- Die allgemeine Verfallszeit, die standardmäßig auf 90 Tage eingestellt ist.
274
+ Die allgemeine Verfallszeit, die standardmäßig auf 90 Tage eingestellt ist.
277
275
``gc.reflogExpireUnreachable ``
278
- Die Verfallszeit für Einträge, die sich auf nicht mehr erreichbare Commits
279
- beziehen, ist standardmäßig auf 30 Tage eingestellt.
276
+ Die Verfallszeit für Einträge, die sich auf nicht mehr erreichbare Commits
277
+ beziehen, ist standardmäßig auf 30 Tage eingestellt.
280
278
281
279
Ihr könnt diese Optionen auf einen längeren Zeitrahmen erhöhen, was allerdings
282
280
nur selten sinnvoll sein dürfte.
0 commit comments