Vai al contenuto
GitTree
Guide Git4 minuti di lettura

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

Aggiornato
  • 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/search

Questo 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 main

La 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/search

Esegui 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 true

Il 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-upstream

Nessuno 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
I due significati di monte
Ramo a monteRemoto a monte
Di cosa si trattaIl ramo remoto tiene traccia di un ramo localeUn remoto chiamato upstream, solitamente l'originale di un fork
Impostato congit push -u o git branch -ugit remote add upstream <url>
Controlla congit branch -vvgit remote -v

Come impostare un upstream in GitTree

  1. 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.

  2. Scegli il remoto

    Scegli origin e premi Invia all'origine. Il ramo viene creato lì e ne tiene traccia da quel momento in poi.

  3. 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.

Il sottomenu Upstream su un ramo in GitTree, con Imposta Upstream… contrassegnato.
Il sottomenu Upstream su un ramo in GitTree, con Imposta Upstream… contrassegnato.GitTree interfaccia con un repository dimostrativo.

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à.