Come impostare un ramo upstream in Git
Un upstream è il ramo remoto verso cui si invia e da cui esegui il pull il ramo locale. Ecco come impostarne, controllarne, modificarne e rimuoverne uno, come correggere l'errore "nessun ramo upstream" e cosa significa upstream su un fork.
Scritto da Kodmora
La software house dietro GitTree
- Rami
- Remoti e push
In questa pagina
Per inviare un nuovo ramo e impostarne l'upstream, esegui `git push -u origin my-branch`. Se il ramo esiste già sul remoto, esegui invece git branch -u origin/my-branch. Dopodiché, git push e git pull sanno dove andare. -u è l'abbreviazione di --set-upstream.
Cos'è un ramo upstream in Git?
L'upstream, chiamato anche ramo di tracciamento, è il ramo remoto collegato a quello locale. Git usa quel collegamento per tre cose: dove git pull e git push vanno senza argomenti, cosa contano avanti e indietro in git status rispetto a cosa significa l'abbreviazione @{u}.
Come posso impostare l'upstream per un nuovo ramo?
git switch -c feature/search
git push -u origin feature/searchQuesto crea il ramo sul remoto e collega i due. Hai solo bisogno di -u al primo push. La guida alla creazione e al cambio di rami copre il passaggio precedente a questo.
Come posso impostare l'upstream per un ramo esistente?
Quando il ramo remoto esiste già, collegalo senza premere:
# the branch you are on
git branch -u origin/feature/search
# any other branch
git branch -u origin/main mainLa forma lunga è git branch --set-upstream-to=origin/main. Se Git dice che il ramo remoto non esiste, esegui prima git fetch.
Come posso risolvere il problema "Il ramo corrente non ha rami a monte"?
Git stampa questo quando esegui git push su un ramo che non è mai stato inviato:
fatal: The current branch feature/search has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin feature/searchEsegui il comando suggerito. Per smettere di vedere l'errore, chiedi a Git di farlo ad ogni primo push (Git 2.37 o successivo):
git config --global push.autoSetupRemote trueIl messaggio correlato "Non sono presenti informazioni di tracciamento per il ramo corrente" proviene da git pull. La correzione è la stessa: git branch -u origin/my-branch.
Come posso vedere cosa traccia un ramo?
# every branch, with its upstream and ahead/behind
git branch -vv
# only the current branch
git rev-parse --abbrev-ref @{u}
# commits you have not pushed
git log @{u}..
# commits you have not pulled
git log ..@{u}Come posso modificare o rimuovere un upstream?
# point the branch somewhere else
git branch -u origin/develop
# stop tracking anything
git branch --unset-upstreamNessuno dei due comandi modifica i commit. Modificano solo le impostazioni del ramo in .git/config.
Cosa significa upstream su una fork?
La parola ha un secondo significato. In un fork, upstream è per convenzione il nome di un remoto: il progetto originale da cui hai effettuato il fork, mentre origin è la tua copia. Questo è ciò di cui parla "git remote add upstream":
git remote add upstream https://github.com/original/project.git
git fetch upstream
git switch main
git merge upstream/main
git push origin main| Ramo a monte | Remoto a monte | |
|---|---|---|
| Di cosa si tratta | Il ramo remoto tiene traccia di un ramo locale | Un remoto chiamato upstream, solitamente l'originale di un fork |
| Impostato con | git push -u o git branch -u | git remote add upstream <url> |
| Controlla con | git branch -vv | git remote -v |
Come impostare un upstream in GitTree
Pubblica un nuovo ramo
Con il ramo estratto, premi Push. GitTree dice che il ramo non tiene ancora traccia di un ramo remoto e richiede il Remoto.
Scegli il remoto
Scegli
origine premi Invia all'origine. Il ramo viene creato lì e ne tiene traccia da quel momento in poi.Cambia ciò che traccia
Fare clic con il pulsante destro del mouse sull'etichetta del ramo e aprire Upstream, quindi Imposta Upstream…. Scegli il ramo Upstream e premi Traccia, oppure scegli Unset Upstream.

Vedi impostare il monitoraggio e pubblicare un ramo per i dettagli e la lezione su remoti e upstream per esercitarsi.
Domande frequenti
Cosa fa git push -u?
Invia il ramo e registra il ramo remoto come suo upstream, quindi successivamente git push e git pull non necessitano di argomenti.
Ho bisogno di -u ad ogni push?
No, solo una volta per ramo. L'impostazione rimane in .git/config finché non la modifichi.
Qual è la differenza tra origine e monte?
origin è il nome predefinito per il remoto da cui hai effettuato la clonazione. upstream è il ramo tracciato da un ramo locale o, per convenzione, un secondo remoto che punta al progetto che hai biforcato.
Cosa significa @{u}?
È una scorciatoia per l'upstream del ramo corrente, quindi git diff @{u} confronta il tuo ramo con il ramo remoto che tiene traccia. @{upstream} è la forma lunga.
Perché il mio ramo effettua il push al ramo remoto sbagliata?
Il suo monte punta lì, spesso dopo una ridenominazione. Esegui git branch -vv per vederlo, quindi git branch -u origin/correct-name per risolverlo.
Fonti
Le affermazioni su altri prodotti sono state confrontate con le rispettive pagine ufficiali in data 7 novembre 2026. Cambiano prezzi e caratteristiche; le pagine dei venditori sono la fonte della verità.
