Vermeide git Foxtrot-Merge – Schritt für Schritt Anleitung mit Lösung

Der Foxtrott-Merge ist wie Tanzen mit Git – nur dass hier nicht die Füße stolpern, sondern die Commits. Beide starten synchron, drehen sich elegant umeinander, bis einer plötzlich im falschen Takt mitschreibt. Während Tänzer das charmant überspielen, verursacht es in Git eine chaotische Merge-Historie. Der Foxtrott bringt Schwung ins Parkett, der Foxtrott-Merge dagegen Unordnung ins Repository.

Und das Beste daran: Ich kann zwar kein Foxtrott tanzen, aber diesen Merge krieg ich jedes Mal hin – leider. In diesem Sinne mal eine Anleitung mit Lösung.

Ein Foxtrot Merge ist ein problematischer Merge-Commit in Git, bei dem die Reihenfolge der Parent-Commits vertauscht ist und dadurch die First-Parent-Historie des Hauptzweigs durcheinanderbringt.

Konkret entsteht ein Foxtrot Merge, wenn du lokale Änderungen committed hast, dann  git pull  ausführst (was automatisch einen Merge erstellt), und dieser Merge-Commit den Remote-Branch als zweiten statt als ersten Parent referenziert.

Das Problem wollen wir mal auf einem Raspberry PI 2 W Zero mit Kali (jedes andere Betriebssystem geht auch 😉 nachstellen und zum Schluss eine Lösung zum verhindern aufzeigen. Wir machen grob das:

Das Problem
Bei einem Merge-Commit sind die Eltern geordnet: Der erste Parent ist HEAD (der Commit, auf dem du warst), der zweite Parent ist der Commit, den du mergst.

Ein Foxtrot Merge macht  origin/master  zum zweiten Parent, wodurch die First-Parent-Historie – die Git in vielen Befehlen wie  git log –first-parent  verwendet – verfälscht wird. Dies erschwert die Nachvollziehbarkeit der Haupt-Entwicklungslinie erheblich. „Vermeide git Foxtrot-Merge – Schritt für Schritt Anleitung mit Lösung“ weiterlesen