Ein Force Push überschreibt den Stand auf dem Remote mit dem eigenen, statt daran anzuschließen. Ein gewöhnlicher Push wird abgelehnt, sobald er Commits verdecken würde; der Force Push hebt genau diese Prüfung auf.
- Force Push
Ein Push, der den Stand auf dem Remote überschreibt, statt daran anzuschließen.
Beispiel: „Nach dem Force Push fehlten zwei Commits der Kollegin, die am selben Zweig gearbeitet hatte.“Geschrieben als
git push --forceoder kurz-f. Die sicherere Fassung heißt--force-with-lease.Abgrenzung zum gewöhnlichen Push: Der fügt an, der Force Push ersetzt. Sichtbar ist der Unterschied erst, wenn jemand anderes auf dem alten Stand aufgebaut hat.
Wann ein Force Push berechtigt ist
Auf einem Zweig, an dem nur du arbeitest. Wer seine Commits vor dem Zusammenführen aufräumt, also eine Nachricht nachbessert oder mehrere Commits zusammenfasst, schreibt damit die Geschichte um; der Zweig passt danach nicht mehr an den Stand auf dem Server, und nur ein Force Push bringt ihn dorthin.
Das ist der Normalfall in Projekten, die auf eine lesbare Geschichte achten. Solange niemand sonst den Zweig geholt hat, kostet es nichts.
Was ein Force Push auf einem gemeinsamen Zweig anrichtet
Er lässt Commits verschwinden, die jemand anderes gepusht hat. Aus der Sicht des Servers sind sie weg, und wer sie noch lokal hat, bekommt beim nächsten Holen eine Geschichte vorgelegt, die mit seiner nicht mehr zusammenpasst.
Besonders unangenehm ist, dass es niemandem auffällt. Es gibt keine Warnung und keine Meldung; die Arbeit fehlt einfach, und gesucht wird sie meist erst Tage später. Deshalb sperren die meisten Dienste den Force Push auf dem Hauptzweig.
Wie man das Risiko begrenzt
Mit --force-with-lease statt --force. Diese Fassung überschreibt nur, wenn der Server noch auf dem Stand steht, den du zuletzt geholt hast. Hat in der Zwischenzeit jemand gepusht, bricht sie ab.
Verlorene Commits sind übrigens eine Weile wiederzufinden: Auf dem Rechner, der sie erzeugt hat, führt Git ein eigenes Protokoll über jeden Stand, auf dem ein Zweig einmal stand. Wer schnell genug fragt, bekommt sie zurück.