Não há informações de rastreamento para a filial atual

581

Uso o github há um período relativamente curto e sempre usei o cliente para realizar confirmações e solicitações. Decidi experimentá-lo a partir do git bash ontem e criei com êxito um novo repositório e arquivos confirmados.

Hoje fiz alterações no repositório de outro computador, confirmei as alterações e agora voltei para casa e executei um git pullpara atualizar minha versão local e recebo o seguinte:

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>

o único colaborador deste repositório sou eu e não há ramos (apenas um mestre). Estou no windows e executei o pull do git bash:

insira a descrição da imagem aqui

status git:

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

ramo git:

$ git branch
* master

O que estou fazendo errado?

valerio0999
fonte
Ok, que tal um git remote -v? O que isso diz?
Criswell
Possível duplicado de tag git checkout, git pull falha no ramo
rjmunro
Você também pode obter esse erro se não tiver o CD no diretório repo clonado, ao executar git pull.
Victoria Stuart
Com o Git 2.24, quarto trimestre de 2019, git pull --set-upstream-to=origin/master masteré possível. Veja minha resposta abaixo
VonC

Respostas:

950

Você pode especificar qual ramificação deseja extrair:

git pull origin master

Ou você pode configurá-lo para que seu ramo mestre local rastreie o ramo mestre do github como um upstream:

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

Esse rastreamento de ramificação é configurado automaticamente quando você clona um repositório (apenas para a ramificação padrão), mas se você adicionar um controle remoto a um repositório existente, precisará configurar o rastreamento por conta própria. Felizmente, os conselhos dados pelo git tornam muito fácil lembrar como fazê-lo.

ComputerDruid
fonte
3
perfeito! funcionou. então o que aconteceu é que não houve "ramificação padrão" para um "git pull" padrão? foi por isso que ocorreu o erro?
Valerio0999 17/08/2015
16
--set-upstream está obsoleto no git 1.9.x, aparentemente. No futuro, você gostaria de usar algo como git branch -u origin/master, assumindo que você já fez o check-out do mestre. Caso contrário, git branch -u origin/master masterfuncionará.
Bart Leia
5
O @BartRead o atualizou para usar a nova --set-upstream-to=sintaxe mais clara . (que é o substituto para --set-upstream)
ComputerDruid
61
isso parece uma situação lamentável - precisamos realmente definir isso manualmente para cada ramo? Por que não podemos simplesmente definir a origem como o controle remoto padrão e, em seguida, ter todos os padrões push / pull na ramificação na origem com o mesmo nome? isso é tão difícil?
Alexander Mills
4
Ah, a parte principal para mim aqui foi que, se você soltar e recriar um controle remoto, o rastreamento configurado pelo original fetchserá perdido. Daí a necessidade de configurá-lo novamente. :)
Ben
42

Consulte: tag git checkout, git pull falha na ramificação

Se, como eu, você precisar fazer isso o tempo todo, poderá configurar um alias para fazê-lo automaticamente, adicionando o seguinte ao seu .gitconfigarquivo:

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

Quando você vir a mensagem There is no tracking information..., execute:

 git set-upstream
 git push

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

rjmunro
fonte
1
Aqui está uma maneira de adicioná-lo ao global .gitconfigem uma linha (pode ser modificado para configurações locais ou outras de acordo):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis
17

A resposta do ComputerDruid é ótima, mas não acho necessário configurar o upstream manualmente, a menos que você queira. Estou adicionando esta resposta porque as pessoas podem pensar que esse é um passo necessário.

Este erro desaparecerá se você especificar o controle remoto que deseja puxar como abaixo:

git pull origin master

Observe que esse originé o nome do controle remoto e masteré o nome da ramificação.


1) Como verificar o nome do controle remoto

git remote -v

2) Como ver quais ramificações disponíveis no repositório.

git branch -r
Aerin
fonte
1
Melhor resposta para mim, obrigado!
Bahman.A
7

Eu sempre encontro essa mensagem exata porque crio uma ramificação local git checkout -b <feature-branch-name>sem antes criar a ramificação remota.

Depois que todo o trabalho foi concluído e confirmado localmente, foi a correção git push -uque criou a ramificação remota, enviou todo o meu trabalho e a URL da solicitação de mesclagem.

Ron Reynolds
fonte
1
Por que vale a pena, eu tinha que correr git push -u origin <my-feature-branch-name>, a fim de criar a filial remota e empurrar o meu trabalho
Donnie C
6

Eu estava tentando os exemplos acima e não conseguia sincronizá-los com uma ramificação (não mestre) que eu havia criado em um computador diferente. Como pano de fundo, criei esse repositório no computador A (git v 1.8) e, em seguida, clonei o repositório no computador B (git 2.14). Fiz todas as minhas alterações no comp B, mas quando tentei colocar as alterações no computador, a AI não conseguiu, obtendo o mesmo erro acima. Semelhante às soluções acima, eu tive que fazer:

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

ligeiramente diferente, mas espero que ajude alguém

imapotatoe123
fonte
Isso funcionou para mim; Eu também estava usando uma ramificação não principal configurada em um computador diferente. Usando este comando no Git Bash Eu era então capaz de obter meus alterações :)
Novastorm
3

1) git branch --set-upstream-to = origem / <master_branch>recurso /<your_current_branch>

2) git pull

MERLIN THOMAS
fonte
1

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

$ git pull

trabalhou para mim!

May Dias
fonte
1

O mesmo aconteceu comigo antes, quando criei um novo ramo git sem empurrá-lo para a origem.

Tente executar essas duas linhas primeiro:

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

Então:

git pull origin name_of_new_branch

Deve ficar bem agora!

Newt
fonte
1

Isso acontece porque a filial atual não tem rastreamento na filial no controle remoto. para que você possa fazer isso de duas maneiras.

  1. Puxar com nome de filial específico

mestre de origem do pull git

  1. Ou você pode ramificação específica para rastrear a ramificação local.

git branch --set-upstream-para = origem /

KR93
fonte
0

git branch --set-upstream-para = origem / principal

Amir Hussain
fonte
2
É sempre útil adicionar alguma explicação à sua resposta, para torná-la mais clara e compreensível. Leia stackoverflow.com/help/how-to-answer .
32cupo
1
Além do argumento de @ 32cupo, é essencialmente o mesmo que a resposta aceita de cinco anos, mas com menos explicações.
Jeremy Caney