Git School · FluxGit

Git-Branch divergiert: merge oder rebase wählen

FluxGit ·

Die Blöcke sind verschiedene Fälle, kein Gesamtskript. Wähle den passenden Fall. Branchnamen, Pfade und VERIFIED_COMMIT vor Nutzung ersetzen. Abbruchbefehle gelten nur für ihre laufende Operation; nicht beide Alternativen ausführen.

Kurzantwort

Ein Branch divergiert, wenn lokale Spitze und Upstream jeweils Commits besitzen, die der anderen Seite fehlen. Fetch ausführen, beide prüfen und Integration wählen. Merge erhält Verläufe; rebase spielt lokale Commits auf dem Upstream neu ab und verändert IDs. Die Warnung beschreibt den Graph, keinen belegten Dateiverlust.

Beispiel und Voraussetzungen

Das Beispiel verwendet main mit origin/main als Upstream, zwei lokalen und einem entfernten Commit. Tatsächliche Namen prüfen. Fetch aktualisiert die Remote-Tracking-Referenz, integriert aber nichts automatisch in deinen Branch. Ein anderer Remote-Name oder fehlender Upstream braucht angepasste Befehle.

Vor Änderungen prüfen

Vor fetch origin Status und branch -vv lesen. Die Links-Rechts-Zählung von HEAD...origin/main zeigt exklusive Commits pro Seite. Graph und Patches prüfen: Zwei gegen eins sagt nichts über dieselbe bearbeitete Funktion. Veraltete Remote-Referenz oder Zählung allein reichen nicht als Diagnose.

git status --short
git branch -vv
git fetch origin
git rev-list --left-right --count HEAD...origin/main
git log --oneline --graph --decorate HEAD origin/main

Referenz oder getrennten Checkout behalten

Erstelle rescue/before-sync an der lokalen Spitze und sichere uncommittete Arbeit separat. Der Branch hält Commit-Verlauf; ein geprüfter Stash deckt versionierte, neue und ignorierte Dateien unterschiedlich ab. Kopie kontrollieren. Integration über fremde lokale Arbeit erschwert Konflikte und Wiederherstellung.

git branch rescue/before-sync HEAD

Erster Ablauf

Wähle merge, wenn Verlauf erhalten werden soll, besonders bei bereits geteilten lokalen Commits. Merge origin/main verbindet Upstream und aktuellen Branch, bei Divergenz normalerweise mit beiden Eltern. Diff und relevante Tests vor Veröffentlichung prüfen. Ein erfolgreicher Merge garantiert keinen korrekten kombinierten Code.

git merge origin/main

Anderes Ergebnis bewusst wählen

Wähle rebase für lokale Commits, deren Umschreibung das Team erlaubt. Rebase origin/main spielt sie auf der geladenen Spitze ab, meist mit neuen IDs. Andere können von alten IDs abhängen. Ein linearer Graph ist keine Erlaubnis, geteilte Branches umzuschreiben oder Schutzregeln zu umgehen.

git rebase origin/main

Grenzen und Ausnahmen

Bei Mergekonflikten Status lesen, Dateien lösen und stagen, Integration abschließen; merge --abort bricht den Vorgang unter passenden Voraussetzungen ab. Beim Rebase den aktuellen Konflikt lösen und rebase --continue nutzen; mehrere Stopps sind möglich. Rebase --abort beendet den aktiven Rebase. Abläufe nicht mischen.

git status
git merge --abort
git rebase --abort

Konflikte und Aufräumen

Reset --hard origin/main ist keine allgemeine Divergenzlösung: Es entfernt den getrennten lokalen Verlauf vom Branch und kann versionierte Dateien überschreiben. Das ist bewusstes Verwerfen, nicht das hier gewünschte Kombinieren. Vor einem anderen Verwerfungsverfahren lokale Commits prüfen und nötige Kopien erhalten.

Ergebnis prüfen

Graph, Status und Differenz zu origin/main prüfen, relevante Tests ausführen. Ein normaler Push kann scheitern, wenn Remote nach fetch weitergezogen ist. Neu abrufen und prüfen, nicht automatisch Force Push verwenden. Rettungsreferenz bis zur Prüfung der Integration und ihrer Folgen behalten.

git status --short
git log -8 --oneline --graph --decorate
git diff origin/main HEAD

Häufige Fragen

Warum verlangt pull eine Strategie? Es kombiniert Fetch mit einer möglicherweise unklaren Integrationswahl. Verhindert merge Konflikte? Nein, beide Methoden können sie haben. Ist rebase immer besser? Nein; geteilte Commits und die Verlaufspolitik des Teams sind entscheidender.

Operation in FluxGit prüfen

Prüfe die Operation und die betreffenden Commits mit FluxGits visuellem Verlauf und Patchansicht. Behalte die Prüfungen für Branch, geteilten Verlauf und lokale Dateien aus diesem Beispiel bei. Die Downloadseite zeigt die aktuell verfügbaren Builds und Plattformen.

Offizielle Git-Referenzen

Verwandte Abläufe

FluxGit herunterladen