Eu clonei um repositório Git, que contém cerca de cinco ramos. No entanto, quando eu faço 'ramo Git' eu vejo apenas um deles:
$ git branch
* master
Eu sei que posso fazer git ramo -a
para ver todos os ramos, mas como eu puxaria todos os ramos localmente, então quando eu faço git ramo
, ele mostra o seguinte?
$ git branch
* master
* staging
* etc...
Podes ir buscar todos os ramos a todos os telecomandos como este:
git fetch --all
It's basicamente um movimento de poder.
O 'fetch' actualiza as cópias locais das filiais remotas para que isto seja sempre seguro para as suas filiais locais **MAS***:
fetch
não actualizará sucursais locais (que **track*** sucursais remotas); se você quiser atualizar suas sucursais locais você ainda precisa puxar todas as sucursais.
fetch
não vai criar filiais locais (que **track*** filiais remotas), você tem que fazer isso manualmente. Se você quiser listar todas as filiais remotas:
git ramo -a
Para actualizar sucursais locais que rastreiam sucursais remotas:
git pull --all
No entanto, isto pode ser ainda insuficiente. Funcionará apenas para suas filiais locais que rastreiam filiais remotas. Para rastrear todos os ramos remotos execute este oneliner BEFORE git pull --all
:
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
(Parece que puxe todos os ramos de todos os controles remotos, mas eu sempre pego primeiro só para ter certeza).
Execute o primeiro comando apenas se existirem filiais remotas no servidor que são't rastreadas pelas suas filiais locais.
P.S. AFAIK git fetch --all
e git update remoto
são equivalentes.
Kamil Szot's comentário, que as pessoas têm achado útil.
eu tive de usar:
para remoto em
git branch -r
; do git branch --track ${remote#origin/} $remote; feitoporque o seu código criou filiais locais chamadas
origin/branchname
e eu estava recebendo "refname 'origem/branchname' é ambíguo sempre que eu referi-me a ele.
$ git remote update
$ git pull --all
Isto assume que todos os ramos estão rastreados.
Se eles são'não podes disparar isto no Bash:
for remote in `git branch -r `; do git branch --track $remote; done
Então execute o comando.