10 KiB
Übung SCM
1. Staging Area
1. Ornder "UebungSCM" angelegt ("mkdir UebungSCM"), mit dem Befehl "git init" ein local repository in "UebungSCM" initialisiert
2. Datei "SCM.txt" ("touch SCM.txt") in dem Ordner erstellt und mit dem Befehl "nano" folgende Textzeilen hinzugefügt:
1
2
3
hello
world
x
3. Status des Repository anzeigen lassen :
$ git status
On branch masterNo commits yet
Untracked files:
(use "git add ..." to include in what will be committed)
SCM.txtnothing added to commit but untracked files present (use "git add" to track)
4. "SCM.txt" zur git Stage hinzufügen
$ git add "SCM.txt"
5. aktuellen Status des Repository anzeigen
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: SCM.txt
6. Änderungen in der Datei anzeigen
$ git diff
7. einige weitere Zeilen in "SCM.txt einfügen
1
2
3
hello
world
x
5
6
7
8
neun
zehn
8. aktuellen Status des Repository anzeigen
$ git status
On branch masterNo commits yet
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: SCM.txtChanges not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: SCM.txt
9. Änderungen in der Datei anzeigen
$ git diff
diff --git a/SCM.txt b/SCM.txt
index 8c721ef..87e597b 100644
--- a/SCM.txt
+++ b/SCM.txt
@@ -4,3 +4,9 @@
hello
world
x
+5
+6
+7
+8
+neun
+zehn
10. Einen commit erzeugen
$ git commit -m "SCM"
[master (root-commit) 888f529] SCM
1 file changed, 6 insertions(+)
create mode 100644 SCM.txt
11. Commit-ID identifizieren
[master (root-commit) 888f529] SCM
$ git show 888f529
commit888f5299d2
12. Zeigen sie die Änderung in der Datei an
$ git diff
diff --git a/SCM.txt b/SCM.txt
index 8c721ef..87e597b 100644
--- a/SCM.txt
+++ b/SCM.txt
@@ -4,3 +4,9 @@
hello
world
x
some +5 text
+6
+7
+8
+neun
+zehn
Staging Area
1. Datei auf den Stand in der Stage zurücksetzen
$ git reset --hard
888f5299d2
HEAD is now at 888f529 SCM
2. Aktueller Status des Repository
$ git status
On branch master
nothing to commit, working tree clean
3. Änderungen in der Datei anzeigen
$ git diff
4. Änderungen aus der Stage entfernen ohne die Datei zurückzusetzen
git checkout -- SCM.txt
Updated 0 paths from the Index
5. Aktueller Status des Repository
$ git status
On branch master
nothing to commit, working tree clean
6. Änderungen in der Datei anzeigen
$ git diff
7. Datei auf den Stand im commit zurücksetzen
$ git revert HEAD
[master b4e7271] Revert "SCM"
1 file changed, 6 deletions(-)
delete mode 100644 SCM.txt
8. Status des Repository
$ git status
On branch master
nothing to commit, working tree clean
Branching - Anlegen
1. Zeilen zur Datei "SCM.txt" hinzufügen (nano SCM.txt) und die Änderung comitten. Commit-Message : "main1"
$ git commit -m "master1"
[master 938ffec] master1
1 file changed, 2 insertions(+)
create mode 100644 SCM.txt
2. Schritt 1 Wiederholen. Commit-Message : "master2"
$ git commit -m "master2"
[master 91cb85a] master2
1 file changed, 6 insertions(+), 2 deletions(-)
3. Weitere Textdatei "testSCM.txt" anlegen, zur Stage hinzufügen und comitten
$ git commit -m "testSCM hinzugefuegt"
[master 09c235a] testSCM hinzugefuegt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 testSCM.txt
4. Neuen Branch "test1" erzeugen
$ git branch "test1"
- und zu diesem wechseln
$ git checkout "test1"
Switched to branch 'test1 '
5. Weiter Zeilen in die erste Datei "SCM.txt" einfügen und committen
$ git commit -m "test1Commit1"
[test1 2e0aea7] test1Commit1
1 file changed, 4 insertions(+)
6. Schritt 5 Wiederholen
$ git commit -m "test1Commit2"
[test1 539ef41] test1Commit2
1 file changed, 4 insertions(+)
7. Commit-ID merken
commit
539ef4193e
test1 539ef41
8. Weitere Zeilen in die zweite Datei "testSCM.txt" einfügen (nano "testSCM")
9. Änderungen zur git Stage hinzufügen (git add "testSCM.txt")
10. Aktueller Status des Repository
$ git status
On branch test1
Changes to be committed:
(use "git restore --staged ..." to unstage)
modified: testSCM.txt
11. Weitere Zeilen zu "testSCM.txt" hinzufügen
Branching - Zweige wechseln 1
1. Zum Branch "master" wechseln
git checkout "master"
2. Aktueller Status des Repository
$ git status
On branch master
Changes to be committed:
(use "git restore --staged ..." to unstage)
modified: testSCM.txt
- alt:
$ git status
On branch master
nothing to commit, working tree clean
3. Branch wechseln zu "test1"
$ git checkout "test1"
4. Neuen Branch erzeugen "test2"
& git branch "test2"
Branching - Zweige Wechseln 2
1. Aktuellen Branch auf den Stand des Branches "master" zurücksetzen
$ git reset --hard "2e0aea7"
2. Status des Repository anzeigen
$ git status
On branch test1
nothing to commit, working tree clean
3. Neue Zeilen in der ersten Datei "SCM.txt" hinzufügen ohne commit
4. Auf den Branch "test2" wechseln
$ git checkout test2
error: Your local changes to the following files would be overwritten by checkout:
SCM.txt
Please commit your changes or stash them before you switch branches.
Aborting
5. Warum schlägt das fehl?
- Da die Änderungen an meiner Datei sonst überschrieben werden würden. Man muss zuerst die aktuelle Version der Datei committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch zu wechseln ab.
6. Änderungen in die Stage übernehmen
$ git commit -m "master3"
7. Branch lässt sich wechseln
8. Wechsel auf den Branch "test2"
git checkout "test2"
9. Branch "test1" in "test3" umbenennen
$ git branch -m "test1" "test3"
Historie - Anzeigen 1
1. Auf Branch "test3" wechseln
$ git checkout "test3"
2. Historie anzeigen lassen
$ git log commit
f68024ec47
(HEAD -> test3, test2)
Author: HV <123>
Date: Sun Nov 19 17:16:37 2023 +0100test1Commit1
commit
9380ec4ee9
Author: HV <123>
Date: Sun Nov 19 17:16:15 2023 +0100test1Commit1
commit
74660af009
(master)
Author: HV <123>
Date: Sun Nov 19 17:12:40 2023 +0100testSCM hinzugefuegt
commit
93adc2aaf1
Author: HV <123>
Date: Sun Nov 19 17:09:48 2023 +0100main2
3. Informationen über den commit
- Author, Uhrzeit, Datum, Commit-Message, Commit-Hash
4. Nur den aktuellen Commit anzeigen (-1)
$ git log -1
commitf68024ec47
(HEAD -> test3, test2)
Author: HV <123>
Date: Sun Nov 19 17:16:37 2023 +0100test1Commit1
5. Vereinfachte Historie
$ git log --oneline
f68024e (HEAD -> test3, test2) test1Commit1
9380ec4 test1Commit1
74660af (master) testSCM hinzugefuegt
93adc2a main2
b93db03 main1
979512c SCM
6. Informationen über einen Commit
- Commit-Message und ID werden ausgegeben
7. Anzahl der Branches
- 3
8. Komplette vereinfachte Historie
$ git log --oneline --all
7a29ba9 (test1) master3
f68024e (HEAD -> test3, test2) test1Commit1
9380ec4 test1Commit1
74660af (master) testSCM hinzugefuegt
93adc2a main2
b93db03 main1
979512c SCM
9. Anzahl der Branches in der komplett vereinfachten Historie
- 4
10. Wo befindet sich die Markierung HEAD
- HEAD -> test3, test2
11. Auf Branch "test2" wechseln
$ git checkout "test2" Switched to branch "test2"
12. Vereinfachte Historie ohne (--all) anzeigen
$ git log --oneline
f68024e (HEAD -> test2, test3) test1Commit1
9380ec4 test1Commit1
74660af (master) testSCM hinzugefuegt
93adc2a main2
b93db03 main1
979512c SCM
13. Mit Ergebnis von Schritt 7 vergleichen
- gleich
Historie Anzeigen 2
1. Wechseln auf Branch "test3"
$ git checkout "test3"
Switched to branch 'test3'
2. Weitere Zeile in der ersten Datei hinzufügen und comitten
$ git commit -m "test3Commit1"
[test3 7074e81] test3Commit1
1 file changed, 3 insertions(+)
3. Schritt 2 drei Mal wiederholen
$ git commit -m "test3Commit2"
[test3 2440b20] test3Commit2
1 file changed, 1 insertion(+)
$ git commit -m "test3Commit3"
[test3 2e428f4] test3Commit3
1 file changed, 1 insertion(+)
$ git commit -m "test3Commit4"
[test3 1ae6afe] test3Commit4
1 file changed, 1 insertion(+)
4. Vereinfachte Historie ohne (--all)
$ git log --oneline
1ae6afe (HEAD -> test3) test3Commit4
2e428f4 test3Commit3
2440b20 test3Commit2
7074e81 test3Commit1
f68024e (test2) test1Commit1
9380ec4 test1Commit1
74660af (master) testSCM hinzugefuegt
93adc2a main2
b93db03 main1
979512c SCM
5. Ergebnis mit Schritt 5 vergleichen
- HEAD ist jetzt nur auf "test3" und die neuen commits, wurden in der Historie ergänzt
6. Komplette verinfachte Historie anzeigen mit (--all)
$ git log --oneline --all
1ae6afe (HEAD -> test3) test3Commit4
2e428f4 test3Commit3
2440b20 test3Commit2
7074e81 test3Commit1
7a29ba9 (test1) master3
f68024e (test2) test1Commit1
9380ec4 test1Commit1
74660af (master) testSCM hinzugefuegt
93adc2a main2
b93db03 main1
979512c SCM
7. Mit Schrit 8 vergleichen
- HEAD ist jetzt auf "test3", die letzten drei commits wurden ergänzt