Git-Merging Verständlich Erklärt
Das Zusammenführen von Änderungen in Git beschreibt den Vorgang, bei dem Aktualisierungen eines Branches in einen anderen integriert werden. Dieser Schritt erfolgt in der Regel, sobald die Arbeit an einem Branch abgeschlossen ist und die Ergebnisse in einen anderen Branch übernommen werden sollen. Git analysiert dafür die Commit-Historien beider Branches und entscheidet anhand dieser, wie die Änderungen bestmöglich kombiniert werden. Haben sich die Branches nicht voneinander entfernt, führt Git einen Fast-Forward-Merge durch und bewegt lediglich den Zeiger weiter. Enthalten jedoch beide Branches eigene Commits, erstellt Git einen Three-Way-Merge, bei dem ein neuer Commit entsteht, der die Anpassungen zusammenführt. Dadurch bleibt die Historie übersichtlich und nachvollziehbar, während parallele Entwicklungen problemlos möglich sind.
Git bietet verschiedene Merge-Strategien an, abhängig davon, wie sich die Branches voneinander unterscheiden. Die wichtigsten Ansätze sind Fast-Forward- und Three-Way-Merges, die im Folgenden erläutert werden.
Fast-Forward-Merging
Ein Fast-Forward-Merge kommt zum Einsatz, wenn der Ziel-Branch keine neuen Commits seit der Abspaltung des anderen Branches enthält. Git erstellt hierbei keinen Merge-Commit, sondern setzt einfach den Branch-Zeiger nach vorne. Die Historie bleibt dadurch linear, auch wenn nicht ersichtlich ist, dass zwischenzeitlich auf einem separaten Branch gearbeitet wurde.
Three-Way-Merging
Ein Three-Way-Merge wird angewendet, wenn sich beide Branches unabhängig voneinander weiterentwickelt haben. Git sucht den gemeinsamen Ursprung beider Branches und vergleicht ihn mit den neuesten Commits. Anschließend erzeugt Git einen Merge-Commit, der die unterschiedlichen Entwicklungen zusammenführt. Diese Vorgehensweise ist vor allem im Team sinnvoll, da sie klar dokumentiert, dass zwei getrennte Entwicklungsstränge vereint wurden.
Die Kurzfassung
Wenn Sie bereits wissen, wie ein Merge funktioniert und lediglich die Schritte benötigen, folgen Sie diesen Befehlen, um einen Branch in einen anderen zu integrieren.
# Zum Branch wechseln, in den gemergt werden soll
$ git checkout target-branch
# Neueste Änderungen vom Remote holen
$ git pull origin target-branch
# Quellbranch in den aktuellen Branch mergen
$ git merge source-branch
# Merge committen, falls Git dies nicht automatisch übernimmt
$ git commit -m „Merge changes from source-branch“
# Gemergten Branch ins Remote-Repository übertragen
$ git push origin target-branch
Branches in Git Zusammenführen
Das Zusammenführen von Branches ist ein zentraler Bestandteil der Zusammenarbeit in Git. Häufig erstellen Sie für neue Funktionen einen eigenen Branch, entwickeln und testen dort Ihre Änderungen und integrieren diese anschließend in einen anderen Branch. Folgen Sie diesen Schritten, um Branches strukturiert zusammenzuführen.
Einen neuen Branch erstellen
console
Copy
$ git checkout -b feature-branch
Dieser Befehl erzeugt den Branch feature-branch und wechselt direkt in ihn. Hier können Sie Ihre Änderungen entwickeln und testen.
Neueste Änderungen abrufen
console
Copy
$ git checkout target-branch
$ git pull origin target-branch
Bevor Sie mergen, sollten Sie immer die aktuellen Änderungen abrufen. Das stellt sicher, dass Sie auf einer sauberen Basis arbeiten und reduziert Konflikte.
Branch zusammenführen
console
Copy
$ git merge feature-branch
Git entscheidet anhand der Commit-Historie, welche Merge-Strategie angewendet wird. Enthält der Ziel-Branch keine neuen Commits, erfolgt ein Fast-Forward-Merge. Haben sich beide Branches weiterentwickelt, nutzt Git einen Three-Way-Merge. Ist kein Konflikt vorhanden, führt Git den Merge automatisch aus. Bei Konflikten pausiert Git und fordert Sie auf, diese manuell zu lösen.
Merge-Änderungen committen
Wenn während des Merges Konflikte auftreten oder manuelle Anpassungen notwendig sind, erstellt Git keinen automatischen Merge-Commit. Nach Abschluss der Konfliktlösung sollten Sie eine klare Commit-Nachricht hinzufügen.
console
Copy
$ git commit -m „merge feature-branch into target-branch“
Den gemergten Branch pushen
console
Copy
$ git push origin target-branch
Damit wird der Merge abgeschlossen und die Änderungen stehen im Ziel-Branch bereit.
Merge-Konflikte Lösen
Merge-Konflikte entstehen, wenn Git Änderungen in derselben Datei nicht automatisch zusammenführen kann. Git markiert die betreffenden Bereiche, sodass Sie diese selbst korrigieren können.
Konfliktdateien identifizieren
console
Copy
$ git status
Git zeigt an, welche Dateien Konflikte enthalten. Dateien, die in beiden Branches geändert wurden, müssen manuell überarbeitet werden.
Konflikte öffnen und beheben
Öffnen Sie die betroffenen Dateien in Ihrem Editor. Git kennzeichnet konfliktbehaftete Bereiche mit den Symbolen <<<<<<<, ======= und >>>>>>>. Entscheiden Sie, welche Änderungen übernommen werden sollen, entfernen Sie die Markierungen und passen Sie die Datei so an, dass sie Ihren finalen Stand widerspiegelt.
Änderungen committen und pushen
console
Copy
$ git add .
$ git commit -m „Resolve merge conflicts“
$ git push origin target-branch
Nach dem Beheben und Committen der Konflikte wird der endgültige Code in das Remote-Repository übertragen.
Fazit
Sie haben gelernt, wie Sie Branches in Git mithilfe von Fast-Forward- und Three-Way-Merges zusammenführen, Konflikte beheben und Merges sauber abschließen. Diese Fähigkeiten sind essenziell für die effiziente Zusammenarbeit in Softwareprojekten. Wenn Sie neu in der Arbeit mit Git-Branches sind oder Ihr Wissen auffrischen möchten.


