git · Git
Die Meldung
Your branch and 'origin/main' have diverged
Was es bedeutet
Ihr Branch und origin/main halten jeweils Commits, die der andere nicht hat — die Historie hat sich in zwei Linien geteilt. Das passiert, wenn Sie lokal committen, während jemand anderes pusht, oder wenn Sie bereits gepushte Commits mit amend oder rebase umgeschrieben haben. git pull --rebase setzt Ihre Commits neu auf die fremden auf und hält die Historie einlinig, gibt Ihren Commits aber neue Hashes; hatten Sie sie schon geteilt, steht dieselbe Arbeit danach zweimal in der Historie — dann ist --no-rebase mit einem einzigen Merge-Commit die sicherere Wahl.
Die Lösung
git pull --rebase origin main- Ausgegeben von
- git
- Git
- 29
Fast jeder git-Fehler ist eine Verweigerung im Sinne von „das aus diesem Zustand zu tun würde etwas verlieren“; fatal: heißt, git hat ohne jede Änderung abgebrochen, und die hint:-Zeilen unter der ersten enthalten meist die eigentliche Lösung.
Eine Fehlermeldung lesen
- Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
- Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
- Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
- Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
- Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.
Häufige Fragen
Q. Was bedeutet „Your branch and 'origin/main' have diverged“?
Ihr Branch und origin/main halten jeweils Commits, die der andere nicht hat — die Historie hat sich in zwei Linien geteilt. Das passiert, wenn Sie lokal committen, während jemand anderes pusht, oder wenn Sie bereits gepushte Commits mit amend oder rebase umgeschrieben haben. git pull --rebase setzt Ihre Commits neu auf die fremden auf und hält die Historie einlinig, gibt Ihren Commits aber neue Hashes; hatten Sie sie schon geteilt, steht dieselbe Arbeit danach zweimal in der Historie — dann ist --no-rebase mit einem einzigen Merge-Commit die sicherere Wahl.
Q. Wie behebe ich das?
git pull --rebase origin main — vor dem Ausführen oben prüfen, was dieser Befehl verwirft.
Q. Welches Werkzeug gibt das aus?
git. Es gehört zu Git, und die Meldung hat 6 Wörter.