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.
Syntax
| Command | What it does |
|---|---|
git push --force | Überschreibt den Remote-Branch, ohne Sicherheitsprüfung |
git push -f | Kurzform von --force |
git push --force-with-lease | Erzwingt nur, wenn zwischenzeitlich niemand anderes gepusht hat |
git push --force-with-lease origin feature | Sichererer Force-Push auf einen benannten Branch |
--force vs --force-with-lease
| Behavior | --force | --force-with-lease |
|---|---|---|
| Überschreibt den Remote | Immer | Nur wenn seit deinem letzten Fetch unverändert |
| Kann Commits anderer löschen | Ja | Verweigert es, außer ein Fetch hat die Lease erneuert |
| Für Teams empfohlen | Nein | Ja |
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.