Non ci sono informazioni di tracciamento per il ramo corrente


581

Uso github da un periodo relativamente breve e ho sempre usato il client per eseguire commit e pull. Ieri ho deciso di provarlo da Git Bash e ho creato con successo un nuovo repository e file di commit.

Oggi ho apportato modifiche al repository da un altro computer, ho eseguito il commit delle modifiche e ora sono tornato a casa ed ho eseguito un git pullaggiornamento per la mia versione locale e ottengo questo:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream develop origin/<branch>

l'unico contributore a questo repository sono io e non ci sono filiali (solo un maestro). Sono su Windows e ho eseguito il pull da Git Bash:

inserisci qui la descrizione dell'immagine

stato git:

$ git status
# On branch master
nothing to commit, working directory clean

ramo git:

$ git branch
* master

Che cosa sto facendo di sbagliato?


Okay, che ne dici di un git remote -v? Cosa dice?
criswell,


È inoltre possibile ottenere tale errore se non è stato eseguito il cd nella directory repo clonata, durante l'esecuzione git pull.
Victoria Stuart,

Con Git 2.24, Q4 2019, git pull --set-upstream-to=origin/master masterè possibile. Vedi la mia risposta qui sotto
VonC

Risposte:


951

È possibile specificare quale ramo si desidera estrarre:

git pull origin master

Oppure puoi configurarlo in modo che il tuo ramo principale locale tenga traccia del ramo principale di github come upstream:

git branch --set-upstream-to=origin/master master
git pull

Questo tracciamento delle diramazioni viene impostato automaticamente quando si clona un repository (solo per la diramazione predefinita), ma se si aggiunge un telecomando a un repository esistente è necessario impostare il tracciamento da soli. Per fortuna, il consiglio dato da Git rende abbastanza facile ricordare come fare.


3
Perfetto! ha funzionato. quindi cosa è successo è che non esiste un "ramo predefinito" per un "git pull" predefinito? ecco perché si è verificato l'errore?
valerio0999,

16
--set-upstream è deprecato in git 1.9.x, a quanto pare. Andando avanti vorresti usare qualcosa del genere git branch -u origin/master, supponendo che tu abbia già verificato il master. In caso contrario, git branch -u origin/master masterfunzionerà.
Bart Leggi il

5
@BartRead lo ha aggiornato per utilizzare la nuova --set-upstream-to=sintassi più chiara . (che è il sostituto di --set-upstream)
ComputerDruid,

61
questo sembra uno stato di cose spiacevole - dobbiamo davvero impostarlo manualmente per ogni ramo? Perché non possiamo semplicemente impostare origin come il telecomando predefinito e quindi avere ogni push / pull predefinito sul ramo su origin con lo stesso nome? è così difficile?
Alexander Mills,

4
Ah, la parte fondamentale per me qui è stata che se si rilascia e si ricrea un telecomando, il tracciamento impostato dall'originale fetchè andato perso. Da qui la necessità di configurarlo di nuovo. :)
Ben

42

Vedi: tag git checkout, git pull non riesce nel ramo

Se come me devi farlo tutto il tempo, puoi impostare un alias per farlo automaticamente aggiungendo quanto segue al tuo .gitconfig file:

[alias]
    set-upstream = \
       !git branch \
           --set-upstream-to=origin/`git symbolic-ref --short HEAD`

Quando vedi il messaggio There is no tracking information... , esegui:

 git set-upstream
 git push

Grazie a https://zarino.co.uk/post/git-set-upstream/


1
Ecco un modo per aggiungerlo al globale .gitconfigin una riga (può essere modificato di conseguenza per le configurazioni locali o di altro tipo):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis,

17

La risposta di ComputerDruid è ottima, ma non credo sia necessario impostare manualmente l'upstream a meno che tu non voglia. Sto aggiungendo questa risposta perché la gente potrebbe pensare che sia un passo necessario.

Questo errore scompare se si specifica il telecomando che si desidera estrarre come di seguito:

git pull origin master

Si noti che originè il nome del telecomando ed masterè il nome del ramo.


1) Come controllare il nome del telecomando

git remote -v

2) Come vedere quali rami sono disponibili nel repository.

git branch -r

1
La migliore risposta per me, grazie!
Bahman. Un

7

Incontro spesso questo messaggio esatto perché creo una filiale locale tramite git checkout -b <feature-branch-name> senza prima creare la diramazione remota.

Dopo che tutto il lavoro è stato terminato e impegnato localmente, la correzione è stata quella git push -uche ha creato il ramo remoto, ha spinto tutto il mio lavoro e quindi l'URL di richiesta di unione.


1
per quello che vale, ho dovuto correre git push -u origin <my-feature-branch-name>per creare il ramo remoto e spingere il mio lavoro
Donnie C

6

Stavo provando gli esempi sopra e non riuscivo a farli sincronizzare con un ramo (non master) che avevo creato su un altro computer. Per lo sfondo, ho creato questo repository sul computer A (git v 1.8) e quindi clonato il repository sul computer B (git 2.14). Ho apportato tutte le modifiche alla comp B, ma quando ho provato a trasferire le modifiche sul computer AI non è stato in grado di farlo, ottenendo lo stesso errore sopra. Simile alle soluzioni di cui sopra, ho dovuto fare:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

leggermente diverso ma si spera che aiuti qualcuno


Questo ha funzionato per me; Stavo anche usando un ramo non master che era stato installato su un altro computer. Usando questo comando in Git Bash sono stato quindi in grado di ottenere le mie modifiche :)
Novastorm,



3

1) git branch --set-upstream-to = origin / <master_branch>feature /<your_current_branch>

2) git pull


1

$ git branch --set-upstream-to=heroku/master master e

$ git pull

ha funzionato per me!


1

La stessa cosa mi è successa prima quando ho creato un nuovo ramo git senza spingerlo all'origine.

Prova a eseguire prima queste due righe:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

Poi:

git pull origin name_of_new_branch

Ora dovrebbe andare bene!


1

Ciò accade a causa del ramo corrente non ha alcun tracciamento sul ramo sul telecomando. così puoi farlo in 2 modi.

  1. Tirare con il nome del ramo specifico

git pull origin master

  1. In alternativa, è possibile ramo specifico da tracciare al ramo locale.

git branch --set-upstream-to = origin /


0

git branch --set-upstream-to = origin / main


2
È sempre utile aggiungere qualche spiegazione alla tua risposta, per renderla più chiara e comprensibile. Si prega di leggere stackoverflow.com/help/how-to-answer .
32

1
Oltre al punto di @ 32cupo, questo è essenzialmente lo stesso della risposta accettata da cinque anni, ma con meno spiegazioni.
Jeremy Caney,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.