Eu mantenho todos os meus repositórios git em uma única pasta, e às vezes eu quero uma checagem de status rápida em todos eles, principalmente para ter certeza de que eu não estou saindo do escritório sem enviar nenhum commit.
Eu escrevi um script bash para fazer isso:
for dir in *; do if [[ -d $dir ]]; then echo "checking " $dir; cd $dir; git status; cd ../; fi; done
Que, não por nada, revelou que eu tenho alguns arquivos não rastreados em um repositório que eu não havia percebido que não estavam sendo rastreados corretamente. Estou percebendo que para este script ser realmente incrível, ele deve destacar os repositórios com alterações não sincronizadas ou commits não processados, porque agora eles não se destacam.
Veja um exemplo de saída:
checking repository_one
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
imgs/one.jpg
imgs/two.jpg
nothing added to commit but untracked files present (use "git add" to track)
checking repostory_three
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: modified_thing.md
no changes added to commit (use "git add" and/or "git commit -a")
checking repository_four
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
checking repository_five
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
No meu terminal, os arquivos não rastreados e as alterações não organizadas aparecem em vermelho, mas o restante é cinza. Também gostaria de destacar "Sua ramificação está à frente de 'origem / mestre' por 1 confirmação". então eu não saio sem empurrá-lo. Posso fazer isso no script em algum lugar? Ou no meu tema? Qualquer lugar?
Existe uma maneira melhor (ou diferente) de verificar rapidamente as alterações não sincronizadas e as ramificações que estão à frente de um commit?
Tags bash git colors shell-script