diff --git a/README.md b/README.md index f00a34e87b3e2bab45c52ab230303d1e52809c9e..438f7dfe32592c706b4d93897b10dece167d58b2 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ Eine Tabelle zur Übersicht der verwendeten Befehle | `git branch <BRANCH> [<BRANCH/COMMIT>]` | Erstellen einer neuen Branch | `git branch -d` | Löschen einer lokalen Branch | `git checkout` | Zu einer anderen Branch wechseln +| `git merge` | Zusammenführen von zwei Branches mit einem Merge-Commit +| `git rebase` | Zusammenführen von zwei Branches durch anhängen der Commits ## Projekterstellung @@ -704,6 +706,160 @@ c1 <- c2 <- c3 <- c4 <- c5 </table> + +### Merging +In einem **Git Repository** kann es verschiedene Branches mit unterschiedlichen Dokumenten/Verzeichnissen geben. +Um einen eindeutigen Projektstand wiederherzustellen, können Branches zusammengefügt werden. +Häufig werden Branches wieder mit einer **Hauptbranch** zusammengefügt, die dann wieder als Ausgangspunkt für neue Branches dient. + +Das Zusammenfügen von zwei Branches kann mit `git merge` oder `git rebase` erfolgen. + +**Merge:**\ +Mit `git merge` entsteht ein neuer Commit auf der aktuellen Branch. +Der Merge-Commit beinhaltet beide Branches als Vorgänger. + +**Rebase:**\ +Mit `git rebase` werden die Commits einer Branch ans ende der aktuellen Branch "geschoben". +Dabei wird der Abzweig mit den Commits entfernt. + + +<table> +<tr> +<th> Commits und Branches </th> +<th> Git Befehl - Mergen einer Branch </th> +</tr> + +<tr> +<td> + +``` + c3 <- c4 b1 + / +c1 <- c2 <- c5 <-c6 main +``` +</td> + +<td> +<!--- Merging Table --> +<table> +<tr> +<td> + +- Mergen einer Branch (*b1*) in die aktuelle Branch (*main*) +``` +git checkout main +git merge b1 +``` +</td> + +<td> + +- Mergen einer Branch (*main*) in die aktuelle Branch (*b1*) +``` +git checkout b1 +git merge main +``` +</td> +</tr> + + +<tr> +<td> + +- Resultat: +``` + c3 <- c4 <----- b1 + / \ +c1 <- c2 <- c5 <-c6 <- c7 main (*) +``` +</td> + +<td> + +- Resultat: +``` + c3 <- c4 <- c7 b1 (*) + / / +c1 <- c2 <- c5 <-c6 main +``` +</td> +</tr> +</table> +</td> +</tr> +</table> + + +<table> +<tr> +<th> Commits und Branches </th> +<th> Git Befehl - Mergen einer Branch </th> +</tr> + +<tr> +<td> + +``` + c3 <- c4 b1 + / +c1 <- c2 <- c5 <-c6 main +``` +</td> + +<td> +<table> +<tr> +<td> + +- Rebase Commits von der aktuellen Branch (*main*) auf die angegebene Branch (*b1*) +``` +git checkout main +git rebase b1 +``` +</td> + +<td> + +- Rebase Commits von der aktuellen Branch (*b1*) auf die angegebene Branch (*main*) +``` +git checkout b1 +git rebase main +``` +</td> +</tr> + + +<tr> +<td> + +- Result: +``` + b1 + V + c3 <- c4 <- c5 <- c6 main (*) + / +c1 <- c2 +``` +</td> + +<td> + +- Result: +``` + main + V +c1 <- c2 <- c5 <-c6 <- c3 <- c4 b1 (*) +``` +</td> +</tr> + +</table> +</td> +</tr> +</table> + + + ## Add your files - [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files