Pergunta

Eu tenho um hub de repositório vazio e remoto.Eu trabalho apenas no ramo master. A última frase da mensagem de erro abaixo me faz pensar: Como faço para descobrir qual é o "controle remoto configurado por padrão para seu branch atual" ?E como faço para configurá-lo?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
Foi útil?

Solução

Rastreie a filial remota

Você pode especificar o repositório remoto padrão para fazer push e pull usando a opção track do git-branch.Você normalmente faria isso especificando a opção --track ao criar seu branch master local, mas como ele já existe, vamos apenas atualizar a configuração manualmente assim:

Edite o seu .git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

Agora você pode simplesmente fazer git push e git pull.

[ fonte ]

Outras dicas

Você pode fazer isso de forma mais simples, garantindo que seu .gitconfig seja deixado em um estado significativo:

Usando Git versão v1.8.0 e superior

git push -u hub master ao enviar, ou:
git branch -u hub/master

OU

(Isso definirá o controle remoto para o branch atualmente com check-out como hub/master )
git branch --set-upstream-to hub/master

OU

(Isso definirá o controle remoto para o branch chamado branch_name como hub/master )
git branch branch_name --set-upstream-to hub/master

Se você estiver usando v1.7.x ou anterior

você deve usar --set-upstream:
git branch --set-upstream master hub/master

Para fins de integridade: as respostas anteriores dizem como configurar o branch upstream, mas não como vê-lo.

Existem algumas maneiras de fazer isso:

git branch -vv mostra essa informação para todos os ramos.(formatado em azul na maioria dos terminais)

cat .git/config mostra isso também.

Para referência:

o comando para obter o push remote efetivo para o branch, por exemplo, master, é:

git config branch.master.pushRemote ||git config remote.pushDefault ||git config branch.master.remote

Este é o motivo (da saída "man git config"):

<✓branch.name.remote [...] diz a git fetch e git push qual remoto buscar / push para [...] [para push] pode ser substituído por remote.pushDefault (para todos os branches) [e] para o branch atual [..] posteriormente substituído por branch.name.pushRemote [...]

Por alguma razão, "man git push" apenas fala sobre branch.name.remote (mesmo que tenha a menor precedência dos três) + afirma erroneamente que se não estiver definido, o push padrão para a origem - não, é que quando você clona um repo, branch.name.remote é definido como origin, mas se você remover essa configuração, o git push falhará, mesmo que você ainda tenha o remoto de origem

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top