Branch und Merge
Branch und Merge¶
Bisher haben wir die grundlegenden Funktionen von git verwendet. Es gibt auch die Funktionen branch
(Zweig) und merge
(zusammenführen), die Git im Vergleich zu den früher existierenden Tools stark vereinfacht hat.
Standardmässig existiert in git immer ein “master”- oder “main”-Zweig:
![../../../_images/git-local-repo-1.png](../../../_images/git-local-repo-1.png)
Fig. 20 Repository mit master
branch
¶
Git wird es uns ermöglichen, ganz einfach einen neuen Zweig zu erstellen:
git branch dev_branch_1
![../../../_images/git-local-repo-2.png](../../../_images/git-local-repo-2.png)
Fig. 21 Repository mit master
und dev_branch_1
branch
¶
Git wird uns auch erlauben, die vorhandenen Zweige einfach in Form einer Liste aufzulisten. Ein Stern (*) vor dem Namen des Zweigs zeigt an, auf welchem Zweig du dich gerade befindest.
git branch
Um auf dem Entwicklungszweig, den wir gerade erstellt haben, zu entwickeln, können wir diesen Zweig auschecken (HEAD ändern):
git checkout dev_branch_1
![../../../_images/git-local-repo-3.png](../../../_images/git-local-repo-3.png)
Fig. 22 Repository mit selektierem dev_branch_1
branch
¶
Jeder Commit auf diesem Zweig kann daher wie folgt dargestellt werden:
![../../../_images/git-local-repo-4.png](../../../_images/git-local-repo-4.png)
Fig. 23 Repository einem dev_branch_1
commit¶
Dann den nächsten Commit:
![../../../_images/git-local-repo-5.png](../../../_images/git-local-repo-5.png)
Fig. 24 Repository einem weiterm dev_branch_1
commit¶
Git ermöglicht auch das einfache Mergen (Zusammenführen) dieses Entwicklungszweiges:
git checkout master
git merge dev_branch_1
Beachte, dass man bei der Merge-Operation an dem Branch arbeitet, in dem man mergen will, und einen anderen Branch in den Branch mergt, an dem man arbeitet.
In dem obigen einfachen Fall, in dem keine weiteren Commits auf dem master
-Zweig gemacht wurden, wird Git in der Lage sein, ein fast-forward
merge durchzuführen und einfach den Zeiger auf den master
-Zweig zu verschieben.
![../../../_images/git-local-repo-6.png](../../../_images/git-local-repo-6.png)
Fig. 25 Repository mit dev_branch_1
merged mit master
`branch¶
Für den Fall, dass in der Zwischenzeit weitere Commits auf dem master
branch durchgeführt wurden:
![../../../_images/git-local-repo-7.png](../../../_images/git-local-repo-7.png)
Fig. 26 Repository mit master
branch
¶
Git wird automatisch einen neuen Merge-Commit erstellen und einen three way merge
durchführen:
![../../../_images/git-local-repo-8.png](../../../_images/git-local-repo-8.png)
Fig. 27 Repository mit dev_branch_1
merged mit modifiziertem master
branch
¶
Git wird uns auch erlauben, Zweige zu löschen, die wir nicht brauchen:
git branch -d dev_branch_1
![../../../_images/git-local-repo-9.png](../../../_images/git-local-repo-9.png)
Fig. 28 Repository mit three way merge
¶
Beachten Sie, dass keiner der Commits gelöscht wird, nur die Zweiginformationen werden gelöscht.