Eu tenho um repositório bare remoto hub
. Eu trabalho apenas no master
ramo. A última frase desta mensagem de erro abaixo me faz pensar: Como descobrir qual é o "controle remoto padrão configurado para sua filial 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.
git
git-push
remote-branch
leonbloy
fonte
fonte
git pull hub master
?Você pode fazê-lo de maneira mais simples, garantindo que você
.gitconfig
fique em um estado significativo:Usando o Git versão v1.8.0 e superior
git push -u hub master
ao empurrar, ou:git branch -u hub/master
OU
(Isso configurará o controle remoto para a filial com check-out atualmente
hub/master
)git branch --set-upstream-to hub/master
OU
(Isso configurará o controle remoto para a ramificação nomeada
branch_name
comohub/master
)git branch branch_name --set-upstream-to hub/master
Se você estiver usando
v1.7.x
ou mais cedovocê deve usar
--set-upstream
:git branch --set-upstream master hub/master
fonte
set-upstream[-to]
comando altera o controle remoto atualmente configurado. O pôster original perguntou sobre o controle remoto configurado padrão . Certamente esse não é o mesmo conceito?--set-upstream-to
fez exatamente as mesmas alterações.git/config
sugeridas por @scragz em sua resposta .Por uma questão de integridade: as respostas anteriores dizem como definir o ramo upstream, mas não como vê-lo.
Há algumas maneiras de fazer isto:
git branch -vv
mostra essas informações para todas as ramificações. (formatado em azul na maioria dos terminais)cat .git/config
mostra isso também.Para referência:
fonte
o comando para obter o push remoto eficaz para a ramificação, por exemplo, master, é:
git config branch.master.pushRemote || git config remote.pushDefault || git config branch.master.remote
Aqui está o porquê (da saída "man git config"):
branch.name.remote [...] informa ao git fetch e git push que controle remoto buscar de / push para [...] [for push] pode ser substituído por remote.pushDefault (para todos os ramos) [e] para o ramificação atual [..] substituída ainda por branch.name.pushRemote [...]
Por alguma razão, "man git push" fala apenas sobre branch.name.remote (mesmo que tenha a menor precedência dos três) + afirma erroneamente que, se não estiver definido, envie os padrões para a origem - não, é apenas quando você clona um repo, o branch.name.remote está definido como origem, mas se você remover essa configuração, o git push falhará, mesmo que você ainda tenha a origem remota
fonte