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/