Se você estiver movendo todas as ramificações para um novo repositório, de um antigo, no repositório local, precisará configurar o rastreamento de cada ramo para os ramos de origem existentes, antes de passar para o novo repositório, caso contrário, todos os ramos de origem não aparecerão em a nova origem. Faça isso manualmente, rastreando ou verificando cada ramificação, ou use o liner:
for remote in `git branch -r | grep -v '\->' | grep -v master`; do git branch --track `echo $remote|sed 's=origin/=='` `echo $remote`; done
Esse comando de uma linha é baseado nas versões dele em outras respostas nesta página, mas é sem dúvida melhor porque:
- ele configura corretamente o rastreamento de ramificação, ao contrário de algumas variantes mais antigas deste comando nesta página, que fornecem apenas um parâmetro para - rastrear e, portanto, cada ramificação acaba rastreando o mestre - não é bom
- nomeia as ramificações locais sem o prefixo "origin /" que eu pessoalmente não quero - e é consistente com o que acontece quando você faz checkout de uma ramificação normalmente.
- pula o mestre de rastreamento, já que isso já está acontecendo
- na verdade, não faz checkout de nada, portanto, é rápido
- evita tropeçar no -> na saída do git branch -r
Em seguida, se você estiver alternando origens, substitua o link pela origem antiga e aponte para um novo controle remoto. Certifique-se de criar o novo controle remoto primeiro, usando a GUI do bitbucket / github, mas não inclua nenhum arquivo nele ou haverá um problema de mesclagem. Por exemplo
git remote set-url origin git@bitbucket.org:YOUR/SOMEREPO.git
Agora empurre. Observe que o segundo comando é necessário para enviar as tags também:
git push -u --all origin
git push --tags origin