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

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

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

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

Fig. 23 Repository einem dev_branch_1 commit

Dann den nächsten Commit:

../../../_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

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

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

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

Fig. 28 Repository mit three way merge

Beachten Sie, dass keiner der Commits gelöscht wird, nur die Zweiginformationen werden gelöscht.