Lösung zu Schritt 0 - START
Lösung zu Schritt 1 - Verzeichnisstruktur
Untersuche das Projektverzeichnis. Welche Dateien gibt es im Workspace? Welche Verzeichnisse? Wo liegt das Repository?
repo $ ll
total 16K
drwxr-xr-x 2 vscode vscode 4.0K foo
-rw-r--r-- 1 vscode vscode 12 hallo-welt
-rw-r--r-- 1 vscode vscode 375 nachher
-rw-r--r-- 1 vscode vscode 0 restaurant
-rw-r--r-- 1 vscode vscode 181 und-tschuess
repo $ ll foo
total 4.0K
-rw-r--r-- 1 vscode vscode 338 bar
repo $ ll .git
total 40K
-rw-r--r-- 1 vscode vscode 52 COMMIT_EDITMSG
-rw-r--r-- 1 vscode vscode 21 HEAD
-rw-r--r-- 1 vscode vscode 92 config
-rw-r--r-- 1 vscode vscode 73 description
drwxr-xr-x 2 vscode vscode 4.0K hooks
-rw-r--r-- 1 vscode vscode 477 index
drwxr-xr-x 2 vscode vscode 4.0K info
drwxr-xr-x 3 vscode vscode 4.0K logs
drwxr-xr-x 53 vscode vscode 4.0K objects
drwxr-xr-x 4 vscode vscode 4.0K refs
Man sieht: Das Projekt enthält einige Dateien, ein Unterverzeichnis und natürlich auch ein .git
-Verzeichnis, welches das Repository beherbergt.
Lösung zu Schritt 2 - Commits ansehen
Sieh Dir die Commits. Achte dabei auf die angezeigten Branches und Tags.
repo $ git log --oneline
bcd8ce5 Created file und-tschuess on branch main by bjoern.
ec6319f : Edit file bar at line 5 on branch main by bjoern.
03e1bea : Edit file bar at line 1 on branch main by bjoern.
95fb57f Edited file hallo-welt on branch main by bjoern.
6121b42 Eine Zeile verschieben
85f5f20 Noch ein paar neue Zeilen
0144fe4 Verschiebe eine Zeile
1178ed1 Created file restaurant on branch main by bjoern.
eaa5d5c Kopiere eine Zeile aus 'bar'
f9dc882 Erg?nze eine Zeile
3592a48 Benenne die Datei im
76dd3c1 Erg?nze zwei zeilen
5498956 Beginne mit leerer Datei
e51b518 Created file bar on branch main by bjoern.
7b2a390 Created file hallo-welt on branch main by bjoern.
Lösung zu Schritt 3 - Head-Commit untersuchen
Zeige Details zur aktuellen Version, die im Workspace ausgecheckt ist.
Hier die aktuelle Version HEAD
:
repo $ git show
commit bcd8ce58de4e1dd12a9c5765f3db1aa791ecf988
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Created file und-tschuess on branch main by bjoern.
diff --git a/und-tschuess b/und-tschuess
new file mode 100644
index 0000000..36fe753
--- /dev/null
+++ b/und-tschuess
@@ -0,0 +1,12 @@
+line 0 created
+line 1 created
+line 2 created
+line 3 created
+line 4 created
+line 5 created
+line 6 created
+line 7 created
+line 8 created
+line 9 created
+line 10 created
+line 11 created
\ No newline at end of file
Lösung zu Schritt 4 - Vergangene Commits untersuchen
Zeige Details zum Release1.0, und dann zur Vorgängerversion des Releases 1.0
Hier kommt die 1.0:
repo $ git show release1.0
commit 6121b424ada668dd7b85af1c928fd8e113e1e4ad
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Eine Zeile verschieben
diff --git a/nachher b/nachher
index c35fa99..32b0886 100644
--- a/nachher
+++ b/nachher
@@ -4,6 +4,6 @@ Nach der Umbenennung
Eine wirklich ziemlich lange Zeile in der Datei 'bar'
Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
Und eine, die nichts damit zu tun hat.
-Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
dazwischen.
+Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
Ende
\ No newline at end of file
Und hier der Vorgänger davon:
repo $ git show release1.0~1
commit 85f5f20735da688fc2c565b19bb14ddc77beaf01
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Noch ein paar neue Zeilen
diff --git a/nachher b/nachher
index dc66148..c35fa99 100644
--- a/nachher
+++ b/nachher
@@ -3,4 +3,7 @@ Und das ist wohl doch sehr lange her. Wie man sieht.
Nach der Umbenennung
Eine wirklich ziemlich lange Zeile in der Datei 'bar'
Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
-Und eine, die nichts damit zu tun hat.
\ No newline at end of file
+Und eine, die nichts damit zu tun hat.
+Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
+dazwischen.
+Ende
\ No newline at end of file
Lösung zu Schritt 5 - ⭐ Inhalte vergangener Versionen untersuchen
Lasse Dir anzeigen welche Dateien und Verzeichnisse es im vorigen Commit gab.
Gebe den Inhalt der Datei bar
so aus, wie er im vorigen Commit war.
Diese Dateien gab es in HEAD~1
:
repo $ git ls-tree -r HEAD~1
100644 blob 758676bb62f2032d5a62747409e185a756f5bf93 foo/bar
100644 blob c57eff55ebc0c54973903af5f72bac72762cf4f4 hallo-welt
100644 blob 32b08868b00465cca451251689dda4c9d83b2d85 nachher
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 restaurant
Und hier der Inhalt von bar
:
repo $ git show HEAD~1:foo/bar
line 0 created
line 1 Edit file bar at line 1 on branch main by bjoern. / Eine wirklich ziemlich lange Zeile in der Datei 'bar'
line 2 created
line 3 created
line 4 created
line 5 Edit file bar at line 5 on branch main by bjoern. / line 5 created
line 6 created
line 7 created
line 8 created
line 9 created
line 10 created
line 11 created
Lösung zu Schritt 6 - ⭐ Commits ansehen: Datei-Statistik
Sieh Dir die Commits an. Lase dir dabei die Statistik anzeigen, d.h. wie viele Zeilen in welcher Datei geändert wurden.
repo $ git log --stat
commit bcd8ce58de4e1dd12a9c5765f3db1aa791ecf988
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Created file und-tschuess on branch main by bjoern.
und-tschuess | 12 ++++++++++++
1 file changed, 12 insertions(+)
commit ec6319f9be4f5cb3dd0663035bd13231f88c0a34
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
: Edit file bar at line 5 on branch main by bjoern.
foo/bar | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 03e1beabb9af3352369f06cdf4134cac014e735e
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
: Edit file bar at line 1 on branch main by bjoern.
foo/bar | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 95fb57f74c287e4353f5cbc77d01ab8493c92651
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Edited file hallo-welt on branch main by bjoern.
hallo-welt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 6121b424ada668dd7b85af1c928fd8e113e1e4ad
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Eine Zeile verschieben
nachher | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 85f5f20735da688fc2c565b19bb14ddc77beaf01
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Noch ein paar neue Zeilen
nachher | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
commit 0144fe470559cf1bfb830cc5a50bb8ee8fc9cbb8
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Verschiebe eine Zeile
nachher | 4 +++-
restaurant | 1 -
2 files changed, 3 insertions(+), 2 deletions(-)
commit 1178ed14bb7fb9a2ef33c2dae320b8b0c0f07913
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Created file restaurant on branch main by bjoern.
restaurant | 1 +
1 file changed, 1 insertion(+)
commit eaa5d5c103fb13ff3a47f241af066eed3d776a01
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Kopiere eine Zeile aus 'bar'
nachher | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit f9dc88232745c99806ea9643503d3f4413686dfa
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Erg?nze eine Zeile
nachher | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit 3592a48ece41fde23388fd5a45a6ac2a9e9bc620
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Benenne die Datei im
foo/vorher => nachher | 0
1 file changed, 0 insertions(+), 0 deletions(-)
commit 76dd3c1ab5213b696bebe0bb6358f9c2478f3c9e
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Erg?nze zwei zeilen
foo/vorher | 2 ++
1 file changed, 2 insertions(+)
commit 5498956d515bfa8324589c53be34845af8d4f77d
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Beginne mit leerer Datei
foo/vorher | 0
1 file changed, 0 insertions(+), 0 deletions(-)
commit e51b51846db756759e189fc371af222b22db74c7
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Created file bar on branch main by bjoern.
foo/bar | 12 ++++++++++++
1 file changed, 12 insertions(+)
commit 7b2a3906cd8ee826ad7d207b53a2103f9b2416d7
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000
Created file hallo-welt on branch main by bjoern.
hallo-welt | 1 +
1 file changed, 1 insertion(+)
Lösung zu Schritt 7 - ⭐ Herkunft von Zeilen ermitteln
Es geht darum für die Datei nachher
Folgendes zu ermitteln:
- Für jede Zeile zeigen, in welchem Commit sie zuletzt bearbeitet wurde.
- Innerhalb der Datei wurden Zeilen verschoben. Welche?
- Es wurden auch Zeilen aus anderen Dateien verschoben und kopiert. Welche?
repo $ git blame nachher -s -w
76dd3c1a foo/vorher 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
76dd3c1a foo/vorher 2) Und das ist wohl doch sehr lange her. Wie man sieht.
f9dc8823 nachher 3) Nach der Umbenennung
eaa5d5c1 nachher 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
0144fe47 nachher 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
0144fe47 nachher 6) Und eine, die nichts damit zu tun hat.
85f5f207 nachher 7) dazwischen.
6121b424 nachher 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
85f5f207 nachher 9) Ende
Man sieht, in welchem Commit die Zeilen zuletzt bearbeitet wurden, auch über Umbenennungen hinweg.
repo $ git blame nachher -s -w -M --show-number
76dd3c1a foo/vorher 1 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
76dd3c1a foo/vorher 2 2) Und das ist wohl doch sehr lange her. Wie man sieht.
f9dc8823 nachher 3 3) Nach der Umbenennung
eaa5d5c1 nachher 4 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
0144fe47 nachher 5 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
0144fe47 nachher 6 6) Und eine, die nichts damit zu tun hat.
85f5f207 nachher 8 7) dazwischen.
85f5f207 nachher 7 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
85f5f207 nachher 9 9) Ende
Die Zeilennummern zeigen, welche Zeilen verschoben wurden.
repo $ git blame nachher -s -w -M -C
76dd3c1a foo/vorher 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
76dd3c1a foo/vorher 2) Und das ist wohl doch sehr lange her. Wie man sieht.
f9dc8823 nachher 3) Nach der Umbenennung
eaa5d5c1 nachher 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
1178ed14 restaurant 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
0144fe47 nachher 6) Und eine, die nichts damit zu tun hat.
85f5f207 nachher 7) dazwischen.
85f5f207 nachher 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
85f5f207 nachher 9) Ende
Hier sieht eine Verschiebung aus der Datei restaurant
.
repo $ git blame nachher -s -w -M -C -C -C
76dd3c1a foo/vorher 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
76dd3c1a foo/vorher 2) Und das ist wohl doch sehr lange her. Wie man sieht.
f9dc8823 nachher 3) Nach der Umbenennung
e51b5184 foo/bar 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
1178ed14 restaurant 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
0144fe47 nachher 6) Und eine, die nichts damit zu tun hat.
85f5f207 nachher 7) dazwischen.
85f5f207 nachher 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
85f5f207 nachher 9) Ende
Hier sieht man, dass Inhalte aus einer anderen Datei foo/bar
kopiert wurden.