# Mein Push wird als non-fast-forward abgelehnt – wie finde ich heraus, warum? Canonical page: https://blame76.com/snippets/bash/2026-09-17-mein-push-wird-als-non-fast-forward-abgelehnt-wie-finde-ich-heraus-warum/ Category: Snippets Type: Bash Published: 2026-09-17 Updated: 2026-09-17 Tags: git, push, non-fast-forward, remote, diverged `git push` wird abgelehnt, weil dein lokaler Branch hinter seinem Remote-Gegenstück liegt. Der Reflex `git pull` kann richtig sein – aber zuerst lohnt sich die Frage: **Was ist auf beiden Seiten passiert?** ## Analyse statt Blindflug ```bash git fetch origin git log --oneline --left-right --graph HEAD...origin/main ``` Links (`<`) stehen Commits, die nur lokal vorhanden sind. Rechts (`>`) stehen Commits, die nur auf `origin/main` vorhanden sind. Zusätzlich hilfreich: ```bash git status -sb ``` Das zeigt kompakt, ob dein Branch `ahead`, `behind` oder beides ist. ## Typische Fälle **Nur behind:** Lokal hast du nichts Eigenes auf `main`. Dann ist ein Fast-Forward normalerweise passend: ```bash git pull --ff-only origin main ``` **Ahead und behind:** Die Historien sind auseinander gelaufen. Jetzt brauchst du bewusst Merge oder Rebase – nicht Force-Push als Abkürzung. **Du hast eigentlich auf einem Feature-Branch gearbeitet:** Dann gehört dein lokaler Commit möglicherweise gar nicht nach `main`. Erst Branch-Situation klären. ## Warum `--ff-only` nützlich ist Es verhindert, dass ein einfacher Aktualisierungsschritt überraschend einen Merge-Commit erzeugt. Wenn Fast-Forward nicht möglich ist, stoppt Git und zwingt dich zu einer bewussten Entscheidung. `git push --force` löst hier nicht die Ursache. Es kann stattdessen Remote-Historie überschreiben.