Il comando git push
accetta due argomenti:
- Un nome remoto, per esempio,
origin
- Un nome di ramo, per esempio,
main
Ad esempio:
git push <REMOTENAME> <BRANCHNAME>
Per esempio, di solito si esegue git push origin main
per spingere le modifiche locali al proprio repository online.
Rinominare i rami
Per rinominare un ramo, si usa lo stesso comando git push
, ma si aggiunge un altro argomento: il nome del nuovo ramo. Per esempio:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
Questo spinge il LOCALBRANCHNAME
al tuo REMOTENAME
, ma viene rinominato in REMOTEBRANCHNAME
.
Gestione degli errori “non-fast-forward”
Se la tua copia locale di un repository è fuori sincronia con, o “dietro”, l’upstreamrepository a cui stai spingendo, riceverai un messaggio che dice non-fast-forward updates were rejected
.Questo significa che devi recuperare, o “fetch”, i cambiamenti dell’upstream, prima di essere in grado di spingere i tuoi cambiamenti locali.
Per maggiori informazioni su questo errore, vedi “Trattare gli errori non-fast-forward.”
Pushing tags
Per default, e senza parametri aggiuntivi, git push
invia tutti i rami corrispondenti che hanno lo stesso nome dei rami remoti.
Per spingere un singolo tag, si può dare lo stesso comando del push di un ramo:
git push <REMOTENAME> <TAGNAME>
Per spingere tutti i tag, si può digitare il comando
git push <REMOTENAME> --tags
Eliminare un ramo o un tag remoto
La sintassi per eliminare un ramo è un po’ arcana a prima vista:
git push <REMOTENAME> :<BRANCHNAME>
Nota che c’è uno spazio prima dei due punti. Il comando assomiglia agli stessi passi che si fanno per rinominare un ramo. Tuttavia, qui, stai dicendo a Git di non spingere nulla in BRANCHNAME
su REMOTENAME
. A causa di questo, git push
cancella il ramo sul repository remoto.
Remote e fork
Potresti già sapere che puoi fare il “fork” dei repository su GitHub.
Quando cloni un repository che possiedi, gli fornisci un URL remoto che dice a Git dove recuperare e spingere gli aggiornamenti. Se vuoi collaborare con il repository originale, devi aggiungere un nuovo URL remoto, tipicamente chiamato upstream
, al tuo clone Git locale:
git remote add upstream <THEIR_REMOTE_URL>
Ora, puoi recuperare aggiornamenti e rami dal loro fork:
git fetch upstream# Grab the upstream remote's branches> remote: Counting objects: 75, done.> remote: Compressing objects: 100% (53/53), done.> remote: Total 62 (delta 27), reused 44 (delta 9)> Unpacking objects: 100% (62/62), done.> From https://github.com/octocat/repo> * main -> upstream/main
Quando hai finito di fare modifiche locali, puoi spingere il tuo ramo locale su GitHub e avviare una richiesta di pull.
Per maggiori informazioni su come lavorare con i fork, vedi “Syncing a fork”.
Altre letture
- Il capitolo “Remotes” dal libro “Pro Git”
-
git remote
pagina man - “Git cheatsheet”
- “Git workflows”
- “Git Handbook”