git · Git
Die Meldung
! [rejected] main -> main (fetch first)
Was es bedeutet
Der Remote-Branch enthält Commits, die Ihr Klon noch nie gesehen hat, sodass ein Push jetzt kein Fast-Forward wäre. Das passiert, wenn eine Kollegin zuerst gepusht hat oder Ihr letzter Fetch lange zurückliegt. git pull --rebase origin main holt diese Commits und setzt Ihre darauf neu auf, danach geht der Push durch. Greifen Sie hier nie zu --force: die Commits, die Sie überschreiben würden, gehören anderen und liegen überhaupt nicht in Ihrem Repository — nichts Lokales kann sie zurückholen.
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 „! [rejected] main -> main (fetch first)“?
Der Remote-Branch enthält Commits, die Ihr Klon noch nie gesehen hat, sodass ein Push jetzt kein Fast-Forward wäre. Das passiert, wenn eine Kollegin zuerst gepusht hat oder Ihr letzter Fetch lange zurückliegt. git pull --rebase origin main holt diese Commits und setzt Ihre darauf neu auf, danach geht der Push durch. Greifen Sie hier nie zu --force: die Commits, die Sie überschreiben würden, gehören anderen und liegen überhaupt nicht in Ihrem Repository — nichts Lokales kann sie zurückholen.
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 7 Wörter.