Menu
Coddy logo textTech

Git Force Push

Ultimo aggiornamento

Un normale git push viene rifiutato quando il tuo branch locale si è allontanato da quello remoto: Git non sovrascrive commit che potresti non aver visto. Il force push scavalca questo controllo e fa coincidere il branch remoto con quello locale. Ti serve dopo aver riscritto la cronologia (un rebase o un amend), ma può cancellare i commit di altre persone, quindi preferisci il più sicuro --force-with-lease.

Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.

Un force push allinea il branch remoto alla tua cronologia locale riscritta: il commit divergente sul remoto viene scartato.

Sintassi

ComandoCosa fa
git push --forceSovrascrive il branch remoto, senza controlli di sicurezza
git push -fForma breve di --force
git push --force-with-leaseForza solo se nel frattempo nessun altro ha fatto push
git push --force-with-lease origin featureForce push più sicuro su un branch specifico

--force vs --force-with-lease

Comportamento--force--force-with-lease
Sovrascrive il remoteSempreSolo se non è cambiato dal tuo ultimo fetch
Può cancellare i commit altruiSìSi rifiuta, a meno che un fetch non abbia aggiornato il lease
Consigliato per i teamNoSì

Domande frequenti su git force push

Quando devo fare un force push?
Quando hai riscritto una cronologia che è già sul remote: dopo un git rebase, un git commit --amend o un rebase interattivo che ha unito dei commit con squash. Il tuo branch locale non corrisponde più alla cronologia del remote, quindi un push normale viene rifiutato e solo un force push può aggiornarlo.
Che differenza c'è tra --force e --force-with-lease?
--force sovrascrive il branch remoto senza condizioni, e può cancellare in silenzio commit che un collega ha inviato dopo il tuo ultimo fetch. --force-with-lease sovrascrive solo se il remote è ancora al commit che hai visto per ultimo: se nel frattempo qualcun altro ha fatto push, si rifiuta e protegge il suo lavoro. Un'avvertenza: qualsiasi fetch (anche il fetch automatico in background di un IDE) aggiorna il lease, quindi fai il push subito dopo aver controllato il remote. Resta comunque preferibile a --force su qualsiasi branch condiviso.
Il force push è pericoloso?
Può esserlo. Su un branch condiviso, un semplice --force può sovrascrivere commit inviati da altri, cancellando di fatto il loro lavoro dal remote. È sicuro su un branch che usi solo tu. Nel dubbio, usa --force-with-lease, che fallisce in modo sicuro invece di distruggere modifiche che non hai visto.
Come annullo un force push?
Se hai ancora i vecchi commit in locale o in git reflog, puoi riportare il branch su di essi e fare di nuovo il force push per ripristinare lo stato precedente. È un motivo in più per usare --force-with-lease: rende molto meno probabili le sovrascritture accidentali fin dall'inizio.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire i comandi git push in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come lavorare con i remote passo dopo passo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA