Um colega enviou um novo branch remoto para origin / dev / homepage e não consigo vê-lo quando executo:
$ git branch -r
Ainda vejo ramos remotos preexistentes.
Presumo que isso seja porque meus refs remotos locais não estão atualizados, portanto, quando eu executei um git pull, nada aconteceu, pois o git pull só puxa no branch de trabalho atual correto? Ao contrário do git push, que empurra todos os branches que possuem alterações no branch remoto correspondente?
git
remote-branch
híbrido9
fonte
fonte
git pull
, obrigadogit fetch <name-of-remote>
funcionou. Sem o nome do controle remoto, NÃO funcionou.Respostas:
Primeiro, verifique se o branch foi realmente empurrado remotamente, usando o comando
git ls-remote origin
. Se o novo branch aparecer na saída, tente e dê o comandogit fetch
: ele deve baixar as referências do branch do repositório remoto.Se o seu branch remoto ainda não aparecer, verifique (na
ls-remote
saída) qual é o nome do branch no remoto e, especificamente, se ele começa comrefs/heads/
. Isso ocorre porque, por padrão, o valor deremote.<name>.fetch
é:de modo que apenas as referências remotas cujo nome começa com
refs/heads/
serão mapeadas localmente como referências de rastreamento remoto emrefs/remotes/origin/
(ou seja, eles se tornarão ramos de rastreamento remoto)fonte
git fetch
, git baixará as referências do repositório remoto padrão que foi especificado em.git/config
: normalmente ele será chamadoorigin
, então os dois comandos são equivalentes, mas sua configuração específica pode ser diferente por algum motivo. Não, você não precisa dargit fetch
para cada branch, já que (por padrão) ele busca todos os branches.git pull
é equivalente agit fetch
+git merge
(ougit rebase
se você alterou os padrões), então você pode continuar usandogit pull
normalmente, e os novos branches remotos aparecerão por si mesmos.git ls-remote gerritrepo:project
mostra o novo branch remoto masgit branch -a
não ... Tenho que fazer outro clone e só então o novo branch apareceráVerifique se
.git/config
contémSe sim, mude para dizer
Então você deve ser capaz de usá-lo:
fonte
brew tap user/repo
: a cópia local do repo clonado porbrew
tinha as configurações que você mencionou e não foi possível ver e usar os outros branches que tinha em meu repo. Obrigado novamente! :) +1!git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
e entãogit fetch origin
obter todas as ramificações na origem .A resposta mais simples é:
git fetch origin <branch_name>
fonte
fatal: Couldn't find remote ref <branch_name>
Fazer uma atualização remota do git também atualizará a lista de branches disponíveis no repositório remoto.
Se você estiver usando o TortoiseGit, a partir da versão 1.8.3.0, você pode fazer "Git -> Sincronizar" e haverá um botão "Atualização remota" no canto inferior esquerdo da janela que aparece. Clique nisso. Então você deve ser capaz de fazer "Git -> Switch / Checkout" e ter o novo branch remoto aparecendo na lista suspensa de branches que você pode selecionar.
fonte
git remote update
é uma maneira antiga de fazer isso, o comando preferido mais recente égit fetch
.Digamos que estejamos procurando a versão / 1.0.5
Quando não
git fetch -all
está funcionando e você não pode ver o branch remoto egit branch -r
não mostrar este branch específico.1. Imprima todas as referências remotas (branches, tags, ...):
git ls-remote origin
Deve mostrar o branch remoto que você está procurando.O novo branch 'release / 1.0.5' aparece na saída.
2. Forçar a busca de um branch remoto:
git fetch origin <name_branch>:<name_branch>
Agora você também tem os refs localmente, você faz o checkout (ou qualquer outro) neste branch.
Tarefa concluída!
fonte
Parece trivial, mas meu problema era que eu não estava no projeto certo. Certifique-se de estar no projeto em que espera estar; caso contrário, você não será capaz de puxar para baixo os ramos corretos.
fonte
Usei força bruta e removi o controle remoto e depois o adicionei
fonte
O que acabou funcionando para mim foi adicionar o nome do repositório remoto ao
git fetch
comando, assim:Agora você pode ver todos eles assim:
fonte
Você pode fazer checkout remote branch / n git fetch && git checkout remotebranch
fonte