diff --git a/UebungSCM.md b/UebungSCM.md index 060dfe2..c2875dd 100644 --- a/UebungSCM.md +++ b/UebungSCM.md @@ -134,7 +134,7 @@ ## Staging Area -### 1. Datei auf den Stand in der Stage zurücksetzen +### 1. Datei auf den Stand in der Stage zurücksetzen ("git reset --hard "commit_hash") > $ git reset --hard 888f5299d207085f201038b048e4e1a99503585f > HEAD is now at 888f529 SCM @@ -170,10 +170,31 @@ ### 7. Datei auf den Stand im commit zurücksetzen +#### Eingabe > $ git revert HEAD -> [master b4e7271] Revert "SCM" -> 1 file changed, 6 deletions(-) -> delete mode 100644 SCM.txt + +#### Ausgabe 1 + +> Revert "SCM" +> +> This reverts commit 4bcb7c56d9dcf9e06223188c52c5d9b6f5a9030d. +> +> # Please enter the commit message for your changes. Lines starting +> # with '#' will be ignored, and an empty message aborts the commit. +> # +> # On branch master +> # Changes to be committed: +> # deleted: SCM.txt +> # + +### Ausgabe 2 + +> $ git revert HEAD +> [master cb6d2d7] Revert "SCM" +> 1 file changed, 4 deletions(-) +> delete mode 100644 SCM.txt + + ### 8. Status des Repository @@ -181,6 +202,7 @@ > 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" @@ -264,7 +286,7 @@ > modified: testSCM.txt > -- alt: +#### alt: > $ git status > On branch master @@ -272,6 +294,8 @@ > + + ### 3. Branch wechseln zu "test1" > $ git checkout "test1" @@ -284,17 +308,31 @@ ## Branching - Zweige Wechseln 2 + + ### 1. Aktuellen Branch auf den Stand des Branches "master" zurücksetzen -> $ git reset --hard "2e0aea7" +> $ git reset "2e0aea7" > ### 2. Status des Repository anzeigen +#### Neuer Status +> $ git status +> On branch test1 +> Changes 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 +> modified: testSCM.txt +> +> no changes added to commit (use "git add" and/or "git commit -a") +#### Alter Status +> $ git status +> On branch master +> Changes to be committed: +> (use "git restore --staged ..." to unstage) +> modified: testSCM.txt -> $ git status -> On branch test1 -> nothing to commit, working tree clean -> ### 3. Neue Zeilen in der ersten Datei "SCM.txt" hinzufügen ohne commit @@ -314,25 +352,26 @@ committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch z ### 6. Änderungen in die Stage übernehmen -> $ git commit -m "master3" +> $ git commit -m "master3" > ### 7. Branch lässt sich wechseln ### 8. Wechsel auf den Branch "test2" -> git checkout "test2" +> git checkout "test2" > ### 9. Branch "test1" in "test3" umbenennen -> $ git branch -m "test1" "test3" +> $ git branch -m "test1" "test3" + ## Historie - Anzeigen 1 ### 1. Auf Branch "test3" wechseln -> $ git checkout "test3" +> $ git checkout "test3" > ### 2. Historie anzeigen lassen @@ -342,25 +381,25 @@ committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch z > Author: HV <123> > Date: Sun Nov 19 17:16:37 2023 +0100 > -> test1Commit1 +> test1Commit1 > > commit 9380ec4ee992866ca2a06af022d665eed8918ab0 > Author: HV <123> > Date: Sun Nov 19 17:16:15 2023 +0100 > -> test1Commit1 +> test1Commit1 > > commit 74660af0098e5ea03e23dc3b611deb26ef6022a4 (master) > Author: HV <123> > Date: Sun Nov 19 17:12:40 2023 +0100 > -> testSCM hinzugefuegt +> testSCM hinzugefuegt > > commit 93adc2aaf180b9e8d7f143d81e460d8692bb2aaa > Author: HV <123> > Date: Sun Nov 19 17:09:48 2023 +0100 > -> main2 +> main2 > ### 3. Informationen über den commit @@ -373,7 +412,7 @@ committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch z > Author: HV <123> > Date: Sun Nov 19 17:16:37 2023 +0100 > -> test1Commit1 +> test1Commit1 ### 5. Vereinfachte Historie @@ -387,11 +426,9 @@ committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch z > ### 6. Informationen über einen Commit - - Commit-Message und ID werden ausgegeben ### 7. Anzahl der Branches - - 3 ### 8. Komplette vereinfachte Historie @@ -407,11 +444,9 @@ committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch z > ### 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 @@ -435,6 +470,7 @@ committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch z - gleich + ## Historie Anzeigen 2 ### 1. Wechseln auf Branch "test3" @@ -504,4 +540,213 @@ committen oder zur Stash hinzufügen, sonst bricht Git den Versuch, den Branch z - HEAD ist jetzt auf "test3", die letzten drei commits wurden ergänzt +## Merging + +### 1. Eine Markierung setzen + +> $ git tag "tag-test3" + +### 2. Branch wechseln auf test2 + +> $ git checkout "test2" + +### 3. Eine Markierung setzen + +> $ git tag "tag-test2" + +### 4. "test3" in "test2" mergen + +> $ git merge test3 +> Auto-merging SCM.txt +> CONFLICT (content): Merge conflict in SCM.txt +> Automatic merge failed; fix conflicts and then commit the result. + + +### 5. Ergebnis in der Datei anzeigen + +> ... +> ... +> ... +> <<<<<<< HEAD +> ======= +> ... +> ... + +### 6. Historie des Repository anzeigen + +> $ git log --oneline +> 1bd5765 (HEAD -> test2, tag: tag-test2) test1_2 +> 84ff691 test1_1 +> 598ccc0 Revert "master3" +> 9706980 master3 +> ef10ce0 (master) master3 neue txt-Datei +> 1c67e50 master2 +> 83e9caf master1 +> cb6d2d7 Revert "SCM" +> 4bcb7c5 SCM + + +### 7. Branch test2 auf Markierung tag-test2 zurücksetzen + +> $ git reset --hard "f68024e" +> HEAD is now at f68024e test1Commit1 + +### 8. Auf branch "test3" wechseln + +> $ git checkout "test3" + +### 9. "test2" in "test3" mergen + +> $ git merge test2 +> Auto-merging SCM.txt +> CONFLICT (content): Merge conflict in SCM.txt +> Automatic merge failed; fix conflicts and then commit the result. + +### 10. Repository anzeigen und mit Schritt 3 vergleichen + +> $ git log --oneline +> e257d98 (HEAD -> test3) test3_1 +> 6675e4e (tag: tag-test3) test1_3 +> ef10ce0 (master) master3 neue txt-Datei +> 1c67e50 master2 +> 83e9caf master1 +> cb6d2d7 Revert "SCM" +> 4bcb7c5 SCM + +### 11. Vergleichen ( Die Zeile "=======" wird nicht mehr angezeigt) + +> ... +> ... +> ... +> <<<<<<< HEAD +> ... +> ... + +## Merging - Konfliktauflösung und Vorbereitung + +### 1. Branch "test3" auf die Markierung "tag-test3" zurücksetzen + +> $ git reset --hard "tag-test3" +> HEAD is now at 6675e4e test1_3 + +### 2. Name des Branches an das Ende der zweiten Zeile der ersten Datei hinzufügen und committen + +> $ git commit -m "Name vom Branch am Ende der zweiten Zeile" +> [test3 c4141f4] Name vom Branch am Ende der zweiten Zeile +> 1 file changed, 1 insertion(+), 1 deletion(-) + +### 3. Für die nächsten 3 Zeilen wiederholen + +> $ git commit -m "Name vom Branch am Ende der dritten Zeile" + +> $ git commit -m "Name vom Branch am Ende der vierten Zeile" + +> $ git commit -m "Name vom Branch am Ende der fuenften Zeile" + +### 4. Markierung setzen + +> $ git tag "tag-test3-conflict" + +### 5. Auf Branch "test2" wechseln + +> $ git checkout "test2" + +### 6. Namen des Branches am Ende in die sechste Zeile schreiben und committen + +> $ git commit -m "Name vom Branch am Ende der sechsten Zeile" + +### 7. Für die nächsten 3 Zeilen wiederholen + +> $ git commit -m "Name vom Branch am Ende der siebten Zeile" +> $ git commit -m "Name vom Branch am Ende der achten Zeile" +> $ git commit -m "Name vom Branch am Ende der neunten Zeile" + +### 8. Markierung setzen + +> & git tag "tag-test2-conflict" + +## Merging Konfliktauflösung + +### 1. Merge von test3 aus starten + +> $ git checkout "test3" +> Switched to branch 'test3' +> $ git merge "test2" + +### 2. Ausgabe (Merge Conflict) + +> $ git merge test2 +> Auto-merging SCM.txt +> CONFLICT (content): Merge conflict in SCM.txt +> Automatic merge failed; fix conflicts and then commit the result. + +### 3. Aktueller Status des Repository + +> $ git status +> On branch test3 +> You have unmerged paths. +> (fix conflicts and run "git commit") +> (use "git merge --abort" to abort the merge) +> +> Unmerged paths: +> (use "git add ..." to mark resolution) +> both modified: SCM.txt +> +> no changes added to commit (use "git add" and/or "git commit -a") + + +### 4. Zu entnehmende Infos +- Branches sind nicht gemerged und haben Konflikte + +### 5. Merge abbrechen + +> $ git merge --abort + +### 9. Welche Änderungen stammen aus welchem Branch? + +- Zeilen mit "test3" stammen aus dem Branch "test3" + + +## Merging - Konfliktauflösung 2 + +### 1. Merge von Branch test2 aus starten + +> $ git checkout "test2" +> Switched to branch 'test2' + +> $ git merge test3 +> Auto-merging SCM.txt +> CONFLICT (content): Merge conflict in SCM.txt +> Automatic merge failed; fix conflicts and then commit the result. + + +### 2. Inhalt der Datei betrachten +### 3 / 4 / 5 / 6 +### 7. Änderungen committen + +> $ git commit -m "Zeilen kopiert, Konfliktbereich" +> [test2 7c42bfa] Zeilen kopiert, Konfliktbereich + +### 8. Aktuellen Status des Repository anzeigen + +> $ git status +> On branch test2 +> nothing to commit, working tree clean + +### 9. Historie anzeigen + +> $ git log --oneline + +### 10. test3 auf die Markierung tag-test3 zurücksetzen + +> git reset --hard tag-test3 + + + + + + + + +