Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git push [<remote> [<refspec>...]] [--force-with-lease] [--tags] [--delete]

Descrizione

Il comando git push invia commit locali a un repository remoto, aggiornando i branch remoti per corrispondere ai tuoi locali. Il primo push di un nuovo branch tipicamente richiede -u per configurare il tracking. Per default, push è non distruttivo: rifiuta di sovrascrivere la storia remota che non hai localmente. Usa --force-with-lease quando hai genuinamente bisogno di riscrivere la storia remota (dopo un rebase) — non usare mai --force nudo su branch condivisi.

Push obbedisce a regole lato server: protezioni dei branch, review obbligatorie, commit firmati e pre-receive hook possono tutti rifiutare un push. Leggi attentamente il messaggio di errore quando questo accade.

Nell'uso quotidiano, git push si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
-u, --set-upstreamImposta upstream per i default futuri di push/pull.
--force-with-leaseForce push solo se il ref remoto corrisponde all'ultimo valore fetchato.
--force / -fForza la sovrascrittura della storia remota (pericoloso su branch condivisi).
--tagsPusha tutti i tag locali.
--deleteCancella un branch remoto.
--dry-runMostra cosa verrebbe pushato.
--allPusha tutti i branch.
--atomicAggiornamento all-or-nothing di più ref.

Esempi

git push -u origin feature/login
# Primo push di un nuovo branch con tracking

git push --force-with-lease
# Alternativa più sicura a --force dopo aver fatto rebase

git push origin --delete old-feature
# Cancella un branch remoto

git push --tags
# Pubblica tutti i tag locali

Errori comuni

Un semplice --force può cancellare i commit dei colleghi. Usa invece --force-with-lease. Pushare a main direttamente bypassa la code review in molti team — configura la protezione del branch. Dimenticare -u significa che i futuri comandi git push hanno bisogno di argomenti espliciti.

Comandi correlati

git fetch, git pull, git remote, git tag