Il comando git push carica sul re­po­si­to­ry centrale contenuti dal vostro re­po­si­to­ry locale. Poiché questo comando so­vra­scri­ve le modifiche, dovrebbe essere eseguito pos­si­bil­men­te solo su un branch di de­sti­na­zio­ne vuoto.

Registra il tuo dominio
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

Cos’è git push?

Con Git avete la pos­si­bi­li­tà di lavorare tran­quil­la­men­te e senza alcun rischio su un progetto, mentre altri membri del team eseguono con­tem­po­ra­nea­men­te altre modifiche. Tutto questo è reso possibile dall’impiego di re­po­si­to­ry locali separati. Quando avete com­ple­ta­to le modifiche, se de­si­de­ra­te in­te­grar­le nel progetto centrale potete usare il comando Git git push. Con questo comando, infatti, inviate i file dal vostro re­po­si­to­ry locale al re­po­si­to­ry remoto, al quale possono accedere anche gli altri svi­lup­pa­to­ri e svi­lup­pa­tri­ci. Pertanto, git push è uno strumento molto im­por­tan­te per la buona riuscita del vostro progetto.

Git push funziona in modo opposto a git fetch e a git pull: mentre questi due comandi vi con­sen­to­no di caricare i contenuti sul vostro re­po­si­to­ry locale pre­le­van­do­li dal re­po­si­to­ry remoto, nel caso di git push si va in direzione opposta. La cosa in­te­res­san­te è che tutti questo comandi con­sen­to­no di eseguire diverse ope­ra­zio­ni con­tem­po­ra­nea­men­te: è questa la prin­ci­pa­le dif­fe­ren­za fra Git e SVN. Quando avete ultimato le vostre modifiche, potete sem­pli­ce­men­te inviarle al re­po­si­to­ry remoto. A tal proposito dovete tenere in con­si­de­ra­zio­ne che git push so­vra­scri­ve le modifiche ef­fet­tua­te in pre­ce­den­za, pertanto si consiglia di prestare par­ti­co­la­re at­ten­zio­ne quando si usa questo comando.

Sintassi e fun­zio­na­men­to di git push

La sintassi di git push è re­la­ti­va­men­te semplice. Anzitutto dovete digitare il comando vero e proprio, quindi indicare il re­po­si­to­ry remoto di de­sti­na­zio­ne e subito dopo il branch locale di origine. Il comando completo si scrive così:

git push <repository remoto=""> <branch locale=""></branch></repository>

Con­fer­man­do il comando, Git crea un branch locale nel re­po­si­to­ry di de­sti­na­zio­ne e vi carica tutti i contenuti, i commit e gli elementi interni. Esiste però un’eccezione: se le modifiche inviate non con­sen­to­no di ef­fet­tua­re in un secondo momento un merge fast-forward, il sistema di controllo di versione mette in atto un mec­ca­ni­smo di pro­te­zio­ne, bloccando git push. Questo evita che il comando so­vra­scri­va ac­ci­den­tal­men­te altri commit.

Esempio di git push

Nel seguente esempio vi mostriamo come funziona git push nella pratica. Partiamo dal pre­sup­po­sto che abbiate apportato delle modifiche nel vostro re­po­si­to­ry locale, che le abbiate testate e che il risultato sia sod­di­sfa­cen­te. Ora, queste modifiche sono pronte per essere inviate al re­po­si­to­ry remoto, di modo che queste risultino di­spo­ni­bi­li anche agli altri membri del team. A questo scopo usiamo diversi comandi, che potete trovare nella pratica guida “Git Cheat Sheet” sca­ri­ca­bi­le in PDF.

git checkout main
git fetch origin main
git rebase -I origin/main
# Squash commits, fix up commit messages etc.
git push origin main

Con il comando git checkout passiamo al branch prin­ci­pa­le. Con git fetch con­trol­lia­mo che il re­po­si­to­ry centrale non contenga modifiche non presenti sul re­po­si­to­ry locale. Il comando git rebase unisce la cro­no­lo­gia del re­po­si­to­ry centrale a quella del re­po­si­to­ry locale. Questo consente di eseguire in un secondo momento un merge fast-forward, poiché la base dei due re­po­si­to­ry, centrale e locale, è la stessa. Ora potete eseguire git push, che invia al re­po­si­to­ry centrale i file locali attuali, incluse tutte le modifiche.

Altre opzioni del comando

Oltre al comando standard il­lu­stra­to sopra, è possibile usare git push anche con altri argomenti.

Caricare tutti i branch nel re­po­si­to­ry remoto

git push <repository remoto=""> --all</repository>

Questo comando è simile alla versione standard con la dif­fe­ren­za che, invece di caricare un branch specifico, si caricano di­ret­ta­men­te tutti i branch locali sul re­po­si­to­ry centrale. In questo modo non dovete compiere questo passaggio per ogni singolo branch.

Inviare i tag al re­po­si­to­ry remoto

git push <repository remoto=""> --tags</repository>

Con questa variante del comando inviate al re­po­si­to­ry remoto tutti i tag locali. Infatti, quando si esegue git push, i tag nor­mal­men­te non sono inclusi.

Forzare git push

git push <repository remoto=""> --force</repository>

Questo comando è uguale alla versione standard, ma in questo caso git push viene eseguito anche quando non è possibile eseguire un merge fast-forward. Poiché in questo modo si presenta il rischio di so­vra­scri­ve­re eventuali modifiche con tutti i problemi che ne con­se­guo­no, con­si­glia­mo vivamente di usare questa variante solo quando ne­ces­sa­rio.

Eseguire git push su un re­po­si­to­ry vuoto

Se volete as­si­cu­rar­vi che progetti di grandi di­men­sio­ni non vengano dan­neg­gia­ti tramite un uso scorretto di git push, vi con­si­glia­mo di eseguire questo comando solo con re­po­si­to­ry vuoti. Per crearne uno usate l’opzione “--bare”. Quando eseguite il push in un re­po­si­to­ry vuoto, le modifiche e gli ag­gior­na­men­ti degli altri membri del team non vengono toccati, così come la struttura del re­po­si­to­ry remoto.

Can­cel­la­re un branch con git push

Potete usare git push anche per can­cel­la­re un branch a livello locale e remoto. Questo il relativo snippet di codice:

git branch -d branch_vecchio
git push origin :branch_vecchio

In questo modo can­cel­le­re­te il branch “branch_vecchio” dal re­po­si­to­ry remoto.

Consiglio

Eseguite il de­ploy­ment online di siti web e app in soli tre passaggi. Con Deploy Now di IONOS ap­pro­fit­ta­te di una con­fi­gu­ra­zio­ne rapida e della massima sca­la­bi­li­tà. Prenotate subito Deploy Now e ap­pro­fit­ta­te di tutte le sue fun­zio­na­li­tà.

Vai al menu prin­ci­pa­le