0%

Kapitel 6

Zusammenführen und Konflikte

Zwei Branches zusammenführen

Zwei Branches können nützliche Arbeit enthalten, die zusammengehört. Eine Person hat vielleicht Preise verbessert, während eine andere eine neue Preisstufe hinzugefügt hat. Beide Branches für immer getrennt zu behalten, lässt das Projekt geteilt. Ein Merge führt ihre Arbeit in einer gemeinsamen Entwicklungslinie zusammen.

In den aktuellen Branch zusammenführen

Git führt immer in den aktuellen Branch zusammen. Diese Richtung zählt. Wenn main aktuell ist und du simplify-tiers aufnehmen möchtest, sieht der gewöhnliche Befehl so aus:

git merge simplify-tiers

git merge bittet Git, einen anderen Branch mit dem Branch zusammenzuführen, auf dem du gerade bist. simplify-tiers ist der Branch, dessen Arbeit aufgenommen wird. Der Befehl wechselt nicht zu diesem Branch, löscht ihn nicht und kontaktiert kein anderes Repository.

Prüfe vor einem Merge in deiner eigenen Arbeit mit einem einfachen git branch den Stern neben dem aktuellen Branch und mit git status, ob dein Arbeitsbaum in einem geklärten Zustand ist. Das vorbereitete Repository dieses Kapitels steckt bereits mitten in einem Merge. Lass seinen Terminalzustand deshalb bis Lektion 3 unverändert. Zunächst sollst du verstehen, was Git gerade versucht.

Die einfachste Form ist ein Fast-Forward

Angenommen, main hat sich seit dem Beginn von simplify-tiers nicht verändert. Der andere Branch ist auf demselben Weg einfach weiter voraus:

main ------------> B
                    \
simplify-tiers -----> C -> D

Es gibt keine getrennte Arbeit, die aufeinander abgestimmt werden muss. Git kann den Namen main von B auf D vorschieben. Das heißt Fast-Forward-Merge.

main ---------------------> D
simplify-tiers -----------> D

Ein neuer Commit ist nicht nötig. Die vorhandenen Commits erzählen bereits die ganze Geschichte. Beide Branch-Namen zeigen jetzt auf denselben neuesten Commit.

Das kann überraschen, weil der Befehl merge heißt, obwohl Git nur einen Branch-Zeiger verschoben hat. Das Ergebnis führt die Arbeit trotzdem zusammen: Der aktuelle Branch erreicht jetzt die Commits des anderen Branchs.

Du bist auf main und führst git merge simplify-tiers aus. Welcher Branch erhält das zusammengeführte Ergebnis?

Wann kann Git einen Merge durch Fast-Forward abschließen?

Die nächste Lektion behandelt die andere Form: Beide Branches haben sich bewegt. Der zusammengeführte Verlauf braucht deshalb einen Commit mit zwei Vorgängern.