Para qualquer script que sugiro que você execute, seria recomendável ocultar ou confirmar todas as suas alterações.
Eu precisava empurrar vários galhos de um controle remoto para outro. Essas respostas exigiram que as filiais locais existissem anteriormente
SRC_R=origin1
DEST_R=origin2
for cbranch in $(git branch -r | grep $SRC_R | cut -d '/' -f2,3,4,5 | cut -d ' ' -f1)
do
git checkout $cbranch
git push $DEST_R $cbranch
done
Apenas mude origin1 para o controle remoto de origem e origin2 para o controle remoto de destino. Copie isso para "remoteBranchCloner.sh" e chame-o usando "sh callBranchCloner.sh".
Pode haver uma maneira melhor , que não faça várias tentativas.
Se você usa meu código, provavelmente deseja usar o cache de credenciais, caso contrário , precisará digitar suas credenciais vezes no servidor.
Para janelas :
Nota: Este script é para linux . Se você o executar no "git bash", o script funcionará, mas você não poderá executá-lo no console nativo sem ter instalado algo especial.
git config [--global] credential.helper wincred
Para linux
git config [--global] credential.helper cache
Onde [--global] significa opcionalmente adicionar --global
Se você deseja definir o rastreamento remoto para todas as filiais para um novo controle remoto:
DEST_R=remotename
for cbranch in `git branch`
do
git checkout $cbranch
git branch -u guru/$cbranch
done
Armazenado como um arquivo .sh e executado com "sh filename.sh", todos os upstreams serão rastreados para rastrear 'remotename' remoto