Às vezes, você tem vários repositórios git em uma pasta. Por exemplo, em sua própria pasta de fornecedor ao usar o Composer (por exemplo vendor/cakemail
). Durante o desenvolvimento mantenho as versões em @dev e trabalho diretamente nelas.
Eu estava cansado de gravar em cada um deles e fazer um git status
para ver se esqueci de cometer alguma coisa, então juntei este pequeno oneliner que provavelmente apelidarei em meu .bashrc
:
find . -maxdepth 1 -mindepth 1 -type d -exec sh -c '(echo {} && cd {} && git status -s && echo)' ;
Na pasta que o contém, execute este comando e ele listará o status de cada repo nessa pasta.
Como funciona:
find .
: para encontrar tudo na pasta atual-maxdepth 1
: de modo que não recursivamente em subdiretórios dos repositórios-mindepth 1
: de modo que pule o diretório atual (de profundidade 0)-type d
: apenas encontrar diretórios-exec sh -c
: gera um shell e dá a ele um comando'(echo {} && cd {} && git status && echo)'
: o comando dado ao shellecho {}
: echo o diretório encontrado porfind
cd {}
: cd no diretório encontrado porfind
git status -s
: executa o status git real, com a-s
opção (curta)echo
: echo uma linha vazia, para facilitar a leitura;
: ponto e vírgula para executar o shell para cada um dos diretórios encontrados em vez de passar todos para um shell como argumentos