Recebi esta mensagem do Git:
Você pediu para puxar da 'origem' remota, mas não especificou uma ramificação. Como este não é o controle remoto configurado por padrão para sua ramificação atual, você deve especificar uma ramificação na linha de comando.
Alguém pode explicar isso? e mais importante como consertá-lo?
git pull
extrai e mescla com o branch atual, então seu comportamento depende completamente de qual branch é retirado, e com um HEAD desanexado (nenhum branch verificado), não há como saber qual branch retirar.Para consertar, supondo que você esteja no
master
branch e queira puxámaster
-lo doorigin
remoto, em novas versões do Git (1.8 ou mais recentes):(Analogamente para outras filiais e / ou remotos.)
Se você pode combinar isso com um push, é ainda mais curto:
Depois disso, um plano
git pull
/git push
fará o que você espera.Durante a série Git 1.7,
git branch
não tinha o-u
switch (apenasgit push
tinha) e, em vez disso, você teve que usar o muito mais longo--set-upstream
:Observe a inversão de argumentos em comparação com
-u
. Eu me atrapalhei com esse pedido mais de uma vez.Todos esses, a propósito, são atalhos para fazer o seguinte, o que você ainda pode fazer explicitamente:
Antes do 1.7, você tinha que fazer dessa maneira.
fonte
git branch --set-upstream master origin/master
-u
opção não está documentadagit branch
na minha versão, 1.8.5.3, tornando sua documentação aqui ainda mais importante. E, como você pode notar, a opção não estava disponível na versão 1.7. *. Visto que-u
é a abreviação de--set-upstream
, a ordem de seus argumentos não deveria ser invertida como você fez--set-upstream
devido ao comentário de @EvanDonovan?git branch -u origin/master master
), ele funciona conforme o esperado / pretendido para mim: "Branch master configurado para rastrear o branch master remoto desde a origem."-u
verdade, a opção não é a forma abreviada de--set-upstream
. Sua ordem de argumentos é efetivamente invertida da ordem para--set-upstream
. Acho que foi só mais tarde que--set-upstream-to
(observe o “-to”) foi introduzido, que é o que-u
agora é na verdade a forma abreviada de.A mensagem diz exatamente do que se trata. Sua filial atual não está associada (não está rastreando) nenhuma filial na origem . Então git não sabe o que puxar.
O que fazer? Depende...
Na maioria das situações usuais, você está trabalhando em algum branch local xyz que se ramificou do master que foi clonado do master da origem . A maneira usual de resolver isso é mudar para master e puxar para sincronizá-lo com a origem e depois voltar para xyz e
rebase master
.Mas, na sua situação, você pode querer fazer outra coisa. Não podemos saber sem saber os detalhes de suas filiais e controles remotos e como você pretende usá-los.
fonte