Precisamos fazer isso hoje, após clonar um repo fazer checkout de todos os branches, e achei que seria legal compartilhar.

Com esse powershell você faz checkout de todos os branches do remote “origin”

git ls-remote --heads origin | % { $_ -match 'refs/heads/(.*)' | out-null; $matches[1] } | % { git checkout $_ }

O legal é que além de ser super prático, você aprende um pouco de powershell e git. Olha só:

Com o “git ls-remote” conseguimos listar os heads, no caso, ele vai jogar isso na tela (esse é o do code-cracker):

git ls-remote

O % no powershell é um foreach. Ele está batendo os valores com uma regex, capturando o nome do branch, e passando pra frente com a variável $matches.

Nesse ponto, o pipe vai ter os nomes de todos os branches, basta então fazer o checkout de cada um.

Para conferir que os trackings estão corretos, basta rodar:

git branch -vv

Aqui tudo rodando (clique para ampliar):

Todo o script

Git + Powershell = BFF

\o/

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.