Lösung zu Schritt 0 - START

Lösung zu Schritt 1 - Staging

Ersetze in der Datei demo, Fit durch Git. Füge sie dann zum Stage-Bereich hinzu. Ersetze dann doof durch toll. Lasse dir den Status und die Diffs für Workspace und Stage zeigen.

Ersetze Fit durch Git.

repo $ # Edit file demo


repo $ git add demo


Ersetze doof durch toll.

repo $ # Edit file demo


repo $ git status

On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: demo

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: demo


Die Datei demo wird sowohl in Changes to be committed: als auch in Changes not staged for commit geführt.

repo $ git diff

diff --git a/demo b/demo
index 94cc8b3..70971ae 100644
--- a/demo
+++ b/demo
@@ -1,3 +1,3 @@
Git
ist
-doof.
+toll.

Man sieht, dass der Stage-Bereich ein anderes Diff hat, als der Workspace.

repo $ git diff --staged

diff --git a/demo b/demo
index af77d0b..94cc8b3 100644
--- a/demo
+++ b/demo
@@ -1,3 +1,3 @@
-Fit
+Git
ist
doof.

Lösung zu Schritt 2 - Restore - Staging zurücknehmen

Die letzte Änderung soll doch noch nicht in das nächste Commit übernommen werden, nehme sie zurück.

repo $ git restore --staged demo


repo $ git status

On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: demo

no changes added to commit (use "git add" and/or "git commit -a")

repo $ git diff

diff --git a/demo b/demo
index af77d0b..70971ae 100644
--- a/demo
+++ b/demo
@@ -1,3 +1,3 @@
-Fit
+Git
ist
-doof.
+toll.

Nach dem zurücknehmen ist der Stage-Bereich wieder leer.

repo $ git diff --staged


Lösung zu Schritt 3 - Restore - Änderung ganz zurücknehmen

Die Änderungen an demo sollen ganz zurückgenommen werden. Lasse Dir nachher Status und Diffs anzeigen.

repo $ git status

On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: demo

no changes added to commit (use "git add" and/or "git commit -a")

repo $ git restore demo


repo $ git status

On branch main
nothing to commit, working tree clean

repo $ git diff


repo $ git diff --staged


Jetzt sind die Änderungen ganz weg.

Lösung zu Schritt 4 - ⭐ Restore - Älteren Inhalt einer Datei zurückholen

Die Datei beispiel wurde dreimal bearbeitet. Hole den mittleren Stand zurück und erstelle ein Commit.

repo $ git log --oneline beispiel

2e48c2f sp?ter
4222f43 dazwischen
dfe79fa dazwischen

repo $ git restore -s HEAD~9 beispiel


repo $ git diff

diff --git a/beispiel b/beispiel
index c571ad6..ab1b57f 100644
--- a/beispiel
+++ b/beispiel
@@ -1 +1 @@
-Und so endete es.
\ No newline at end of file
+Dann kam das mit dem Mittelteil.
\ No newline at end of file

repo $ git commit -am "Mittlerer Stand wiederhergestellt."

[main 27abb5e] Mittlerer Stand wiederhergestellt.
1 file changed, 1 insertion(+), 1 deletion(-)

Lösung zu Schritt 5 - ⭐ Restore - Zurückholen älterer Verzeichnisversionen

Im Folder ufer wurde ein Spiel gespielt. Stelle die Spielstände nach, indem Du restore auf das ufer-Verzeichnis anwendest.

Tipp: ll ufer/* zeigt die Verzeichnisse des Spiels.

Tipp: Beim restore werden unversionierte Dateien nicht abgeräumt. Man kann sie mit dem stash-Befehl abräumen.

repo $ git log --oneline -- ufer/

40f54a9 Zug 7
a9882a6 Zug 6
954d812 Zug 5
77f4917 Zug 4
e1ee973 Zug 3
3fe29e6 Zug 2
6d31336 Zug 1
cf716f5 Starte spiel

Zug 1

repo $ git stash -u

No local changes to save

repo $ git restore -s HEAD~7 ufer


repo $ ll ufer/*

ufer/ost:
total 8.0K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 ZIEGE

ufer/west:
total 8.0K
-rw-r--r-- 1 vscode vscode 181 KOHL
-rw-r--r-- 1 vscode vscode 181 WOLF

Zug 2

repo $ git stash -u

Saved working directory and index state WIP on main: 27abb5e Mittlerer Stand wiederhergestellt.

repo $ git restore -s HEAD~6 ufer


repo $ ll ufer/*

ufer/ost:
total 4.0K
-rw-r--r-- 1 vscode vscode 181 ZIEGE

ufer/west:
total 12K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 KOHL
-rw-r--r-- 1 vscode vscode 181 WOLF

Zug 3

repo $ git stash -u

Saved working directory and index state WIP on main: 27abb5e Mittlerer Stand wiederhergestellt.

repo $ git restore -s HEAD~5 ufer


repo $ ll ufer/*

ufer/ost:
total 12K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 WOLF
-rw-r--r-- 1 vscode vscode 181 ZIEGE

ufer/west:
total 4.0K
-rw-r--r-- 1 vscode vscode 181 KOHL

Zug 4

repo $ git stash -u

Saved working directory and index state WIP on main: 27abb5e Mittlerer Stand wiederhergestellt.

repo $ git restore -s HEAD~4 ufer


repo $ ll ufer/*

ufer/ost:
total 4.0K
-rw-r--r-- 1 vscode vscode 181 WOLF

ufer/west:
total 12K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 KOHL
-rw-r--r-- 1 vscode vscode 181 ZIEGE

Zug 5

repo $ git stash -u

Saved working directory and index state WIP on main: 27abb5e Mittlerer Stand wiederhergestellt.

repo $ git restore -s HEAD~3 ufer


repo $ ll ufer/*

ufer/ost:
total 12K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 KOHL
-rw-r--r-- 1 vscode vscode 181 WOLF

ufer/west:
total 4.0K
-rw-r--r-- 1 vscode vscode 181 ZIEGE

Zug 6

repo $ git stash -u

Saved working directory and index state WIP on main: 27abb5e Mittlerer Stand wiederhergestellt.

repo $ git restore -s HEAD~2 ufer


repo $ ll ufer/*

ufer/ost:
total 8.0K
-rw-r--r-- 1 vscode vscode 181 KOHL
-rw-r--r-- 1 vscode vscode 181 WOLF

ufer/west:
total 8.0K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 ZIEGE

Zug 7

repo $ git stash -u

Saved working directory and index state WIP on main: 27abb5e Mittlerer Stand wiederhergestellt.

repo $ git restore -s HEAD~1 ufer


repo $ ll ufer/*

total 16K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 KOHL
-rw-r--r-- 1 vscode vscode 181 WOLF
-rw-r--r-- 1 vscode vscode 181 ZIEGE

Zug 8

repo $ git stash -u

No local changes to save

repo $ git restore -s HEAD~0 ufer


repo $ ll ufer/*

total 16K
-rw-r--r-- 1 vscode vscode 181 BAUER
-rw-r--r-- 1 vscode vscode 181 KOHL
-rw-r--r-- 1 vscode vscode 181 WOLF
-rw-r--r-- 1 vscode vscode 181 ZIEGE

Zur Aufgabe

Zum Überblick