Link Search Menu Expand Document

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 44K
drwxr-xr-x 2 vscode vscode 4.0K branches
-rw-r--r-- 1 vscode vscode 52 COMMIT_EDITMSG
-rw-r--r-- 1 vscode vscode 92 config
-rw-r--r-- 1 vscode vscode 73 description
-rw-r--r-- 1 vscode vscode 21 HEAD
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 54 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

68be303 Created file und-tschuess on branch main by bjoern.
6a70b5c : Edit file bar at line 5 on branch main by bjoern.
a5fc3f7 : Edit file bar at line 1 on branch main by bjoern.
272dd25 Edited file hallo-welt on branch main by bjoern.
f7824a5 Eine Zeile verschieben
0be4bbe Noch ein paar neue Zeilen
480a5cf Verschiebe eine Zeile
5c0c9ae Created file restaurant on branch main by bjoern.
aa145b9 Kopiere eine Zeile aus 'bar'
9e96dc7 Ergänze eine Zeile
96ef7f4 Benenne die Datei im
faf8ba9 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 68be303d3c1a0bfab263879b530d617560d3f4c1
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 f7824a5ff32f15f3c890c6b9ba2bff984692e221
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 0be4bbe385655d6eae9c7b3b858b542d6ec9011d
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 68be303d3c1a0bfab263879b530d617560d3f4c1
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 6a70b5cfc5496d039d35049225e981336d71df8c
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 a5fc3f725eaf3607231e66b5ed92862d17a77996
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 272dd25328588261b44fbf5a7d7e55859172387b
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 f7824a5ff32f15f3c890c6b9ba2bff984692e221
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 0be4bbe385655d6eae9c7b3b858b542d6ec9011d
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 480a5cf16b90f25d3ea34d929f5b6671c747b871
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 5c0c9ae6ac2eb35b98ee99475de27c8f0865210b
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 aa145b90565f4bcfe74608147eb5bef0ad2bc013
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 9e96dc75ffa257cb367e5bea5e10f8718f2bd7ca
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 96ef7f4b56d36e5e19fd12d25592115d78a477a2
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 faf8ba9902490c2bd922b88ae96556c969a2d7f5
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

faf8ba99 foo/vorher 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
faf8ba99 foo/vorher 2) Und das ist wohl doch sehr lange her. Wie man sieht.
9e96dc75 nachher 3) Nach der Umbenennung
aa145b90 nachher 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
480a5cf1 nachher 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
480a5cf1 nachher 6) Und eine, die nichts damit zu tun hat.
0be4bbe3 nachher 7) dazwischen.
f7824a5f nachher 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
0be4bbe3 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

faf8ba99 foo/vorher 1 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
faf8ba99 foo/vorher 2 2) Und das ist wohl doch sehr lange her. Wie man sieht.
9e96dc75 nachher 3 3) Nach der Umbenennung
aa145b90 nachher 4 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
480a5cf1 nachher 5 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
480a5cf1 nachher 6 6) Und eine, die nichts damit zu tun hat.
0be4bbe3 nachher 8 7) dazwischen.
0be4bbe3 nachher 7 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
0be4bbe3 nachher 9 9) Ende

Die Zeilennummern zeigen, welche Zeilen verschoben wurden.

repo $ git blame nachher -s -w -M -C

faf8ba99 foo/vorher 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
faf8ba99 foo/vorher 2) Und das ist wohl doch sehr lange her. Wie man sieht.
9e96dc75 nachher 3) Nach der Umbenennung
aa145b90 nachher 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
5c0c9ae6 restaurant 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
480a5cf1 nachher 6) Und eine, die nichts damit zu tun hat.
0be4bbe3 nachher 7) dazwischen.
0be4bbe3 nachher 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
0be4bbe3 nachher 9) Ende

Hier sieht eine Verschiebung aus der Datei restaurant.

repo $ git blame nachher -s -w -M -C -C -C

faf8ba99 foo/vorher 1) Diese Zeilen wurden also ganz am Anfang geschrieben.
faf8ba99 foo/vorher 2) Und das ist wohl doch sehr lange her. Wie man sieht.
9e96dc75 nachher 3) Nach der Umbenennung
e51b5184 foo/bar 4) Eine wirklich ziemlich lange Zeile in der Datei 'bar'
5c0c9ae6 restaurant 5) Eine sehr lange Zeile aus 'restaurant', die verschoben wird.
480a5cf1 nachher 6) Und eine, die nichts damit zu tun hat.
0be4bbe3 nachher 7) dazwischen.
0be4bbe3 nachher 8) Eine ebenfalls recht lange Zeile, die demnächst auch verschoben werden soll.
0be4bbe3 nachher 9) Ende

Hier sieht man, dass Inhalte aus einer anderen Datei foo/bar kopiert wurden.

Zur Aufgabe

Zum Überblick