Git push: inviare modifiche al repository centrale

Il comando git push carica sul repository centrale contenuti dal vostro repository locale. Poiché questo comando sovrascrive le modifiche, dovrebbe essere eseguito possibilmente solo su un branch di destinazione vuoto.

Registrazione dominio

Più di un semplice nome.

Registra il tuo dominio con IONOS e approfitta di tutte le nostre funzionalità.

E-Mail
SSL Wildcard
Supporto 24/7

Cos’è git push?

Con Git avete la possibilità di lavorare tranquillamente e senza alcun rischio su un progetto, mentre altri membri del team eseguono contemporaneamente altre modifiche. Tutto questo è reso possibile dall’impiego di repository locali separati. Quando avete completato le modifiche, se desiderate integrarle nel progetto centrale potete usare il comando Git git push. Con questo comando, infatti, inviate i file dal vostro repository locale al repository remoto, al quale possono accedere anche gli altri sviluppatori e sviluppatrici. Pertanto, git push è uno strumento molto importante 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 consentono di caricare i contenuti sul vostro repository locale prelevandoli dal repository remoto, nel caso di git push si va in direzione opposta. La cosa interessante è che tutti questo comandi consentono di eseguire diverse operazioni contemporaneamente: è questa la principale differenza fra Git e SVN. Quando avete ultimato le vostre modifiche, potete semplicemente inviarle al repository remoto. A tal proposito dovete tenere in considerazione che git push sovrascrive le modifiche effettuate in precedenza, pertanto si consiglia di prestare particolare attenzione quando si usa questo comando.

Sintassi e funzionamento di git push

La sintassi di git push è relativamente semplice. Anzitutto dovete digitare il comando vero e proprio, quindi indicare il repository remoto di destinazione e subito dopo il branch locale di origine. Il comando completo si scrive così:

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

Confermando il comando, Git crea un branch locale nel repository di destinazione e vi carica tutti i contenuti, i commit e gli elementi interni. Esiste però un’eccezione: se le modifiche inviate non consentono di effettuare in un secondo momento un merge fast-forward, il sistema di controllo di versione mette in atto un meccanismo di protezione, bloccando git push. Questo evita che il comando sovrascriva accidentalmente altri commit.

Esempio di git push

Nel seguente esempio vi mostriamo come funziona git push nella pratica. Partiamo dal presupposto che abbiate apportato delle modifiche nel vostro repository locale, che le abbiate testate e che il risultato sia soddisfacente. Ora, queste modifiche sono pronte per essere inviate al repository remoto, di modo che queste risultino disponibili anche agli altri membri del team. A questo scopo usiamo diversi comandi, che potete trovare nella pratica guida “Git Cheat Sheet” scaricabile 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 principale. Con git fetch controlliamo che il repository centrale non contenga modifiche non presenti sul repository locale. Il comando git rebase unisce la cronologia del repository centrale a quella del repository locale. Questo consente di eseguire in un secondo momento un merge fast-forward, poiché la base dei due repository, centrale e locale, è la stessa. Ora potete eseguire git push, che invia al repository centrale i file locali attuali, incluse tutte le modifiche.

Altre opzioni del comando

Oltre al comando standard illustrato sopra, è possibile usare git push anche con altri argomenti.

Caricare tutti i branch nel repository remoto

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

Questo comando è simile alla versione standard con la differenza che, invece di caricare un branch specifico, si caricano direttamente tutti i branch locali sul repository centrale. In questo modo non dovete compiere questo passaggio per ogni singolo branch.

Inviare i tag al repository remoto

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

Con questa variante del comando inviate al repository remoto tutti i tag locali. Infatti, quando si esegue git push, i tag normalmente 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 sovrascrivere eventuali modifiche con tutti i problemi che ne conseguono, consigliamo vivamente di usare questa variante solo quando necessario.

Eseguire git push su un repository vuoto

Se volete assicurarvi che progetti di grandi dimensioni non vengano danneggiati tramite un uso scorretto di git push, vi consigliamo di eseguire questo comando solo con repository vuoti. Per crearne uno usate l’opzione “--bare”. Quando eseguite il push in un repository vuoto, le modifiche e gli aggiornamenti degli altri membri del team non vengono toccati, così come la struttura del repository remoto.

Cancellare un branch con git push

Potete usare git push anche per cancellare 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 cancellerete il branch “branch_vecchio” dal repository remoto.

Consiglio

Eseguite il deployment online di siti web e app in soli tre passaggi. Con Deploy Now di IONOS approfittate di una configurazione rapida e della massima scalabilità. Prenotate subito Deploy Now e approfittate di tutte le sue funzionalità.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.