Menu
Coddy logo textTech

Git Force Push

Zuletzt aktualisiert

Ein normaler git push wird abgelehnt, wenn dein lokaler Branch vom Remote abgewichen ist - Git überschreibt keine Commits, die du vielleicht nicht gesehen hast. Ein Force-Push umgeht diese Prüfung und gleicht den Remote-Branch an deinen lokalen an. Du brauchst ihn nach dem Umschreiben der Historie (einem Rebase oder Amend), aber er kann Commits anderer löschen - greif also zum sichereren --force-with-lease.

Probiere das im Terminal-Playground aus - eine echte Shell in deinem Browser, nichts zu installieren.

Ein Force-Push bringt den Remote-Branch auf den Stand deiner umgeschriebenen lokalen Historie - der abweichende Commit des Remotes wird verworfen.

Syntax

CommandWhat it does
git push --forceÜberschreibt den Remote-Branch, ohne Sicherheitsprüfung
git push -fKurzform von --force
git push --force-with-leaseErzwingt nur, wenn zwischenzeitlich niemand anderes gepusht hat
git push --force-with-lease origin featureSichererer Force-Push auf einen benannten Branch

--force vs --force-with-lease

Behavior--force--force-with-lease
Überschreibt den RemoteImmerNur wenn seit deinem letzten Fetch unverändert
Kann Commits anderer löschenJaVerweigert es, außer ein Fetch hat die Lease erneuert
Für Teams empfohlenNeinJa

Git-Force-Push-FAQ

Wann brauche ich einen Force-Push?
Wenn du Historie umgeschrieben hast, die bereits auf dem Remote liegt - nach einem git rebase, einem git commit --amend oder einem interaktiven Rebase, der Commits zusammengeführt hat. Dein lokaler Branch stimmt nicht mehr mit der Remote-Historie überein, deshalb wird ein normaler Push abgelehnt und nur ein Force-Push kann ihn aktualisieren.
Was ist der Unterschied zwischen --force und --force-with-lease?
--force überschreibt den Remote-Branch bedingungslos, wodurch Commits, die ein Teamkollege nach deinem letzten Fetch gepusht hat, stillschweigend gelöscht werden können. --force-with-lease überschreibt nur, wenn der Remote noch bei dem Commit steht, den du zuletzt gesehen hast - hat jemand anderes zwischenzeitlich gepusht, verweigert es den Vorgang und schützt dessen Arbeit. Ein Vorbehalt: Jeder Fetch (auch der automatische Hintergrund-Fetch einer IDE) erneuert die Lease - pushe also direkt, nachdem du den Remote geprüft hast. Auf jedem geteilten Branch ist es --force trotzdem vorzuziehen.
Ist ein Force-Push gefährlich?
Er kann es sein. Auf einem geteilten Branch kann ein einfacher --force Commits überschreiben, die andere gepusht haben, und deren Arbeit damit faktisch aus dem Remote löschen. Auf einem Branch, den nur du nutzt, ist er sicher. Im Zweifel nutze --force-with-lease, das sicher fehlschlägt, statt ungesehene Änderungen zu zerstören.
Wie mache ich einen Force-Push rückgängig?
Wenn du die alten Commits noch lokal oder im git reflog hast, kannst du deinen Branch darauf zurücksetzen und erneut force-pushen, um den vorherigen Zustand wiederherzustellen. Das ist ein weiterer Grund, --force-with-lease zu verwenden - es macht versehentliche Überschreibungen von vornherein deutlich unwahrscheinlicher.
Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um git-push-Befehle in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt auch das Arbeiten mit Remotes Schritt für Schritt.
Coddy programming languages illustration

Lerne Git mit Coddy

LOS GEHT'S