Eu encontrei uma ótima solução para extrair do branch atual de todos os subdiretórios que têm uma pasta .git, mesmo se cada repositório tiver um branch diferente verificado. O comando é de uma linha, flexível o suficiente para ser modificado para diferentes comandos git e pode ter um alias.
Basta copiar e colar o seguinte:
find . -type d -maxdepth 2 -name .git -exec sh -c 'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)' {} \;
Dividindo:
find . -type d -maxdepth 2 -name .git
Encontre todos os diretórios (-type d) no diretório atual (find.) Que têm o nome ".git" (-name .git), procurando no máximo dois diretórios de profundidade (2 em vez de 1 porque estamos procurando o pasta git dentro da pasta repo git).
-exec sh -c
Execute o seguinte comando shell (exec sh -c)
'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)'
Mude o diretório para o primeiro argumento (cd $ 0), então mude o diretório um nível acima para deixar a pasta .git (cd ..) então faça git pull origin enquanto especifica o branch executando git rev-parse ... para o branch atual Confirmar HEAD.
{} \;
O "{}" é o caminho relativo do resultado que obtemos do comando find inicial . O ; é usado para encerrar o comando.
Testado em MacOS 10.14.6 em zsh. No estado em que se encontra, funciona apenas quando as filiais remotas e locais têm o mesmo nome, AFAIK.
Você pode modificar isso para obter o status. Espero que você possa adicionar argumentos para tornar isso mais flexível, mas ainda não tentei.
hg mercurial
.