Script de shell simples, mas muito útil. Escrito usando este tópico do SO como referência.
Executar “find-dirty” irá encontrar e verificar todas as pastas .git no diretório de trabalho para alterações não testadas ou não confirmadas, imprimindo o caminho se um repositório tiver alguma.
#!/bin/bash
function unstaged_changes() {
worktree=${1%/*};
git --git-dir="$1" --work-tree="$worktree" diff-files --quiet --ignore-submodules --
}
function uncommited_changes() {
worktree=${1%/*};
git --git-dir="$1" --work-tree="$worktree" diff-index --cached --quiet HEAD --ignore-submodules --
}
function find-dirty () {
for gitdir in `find . -name .git`;
do
worktree=${gitdir%/*};
if ! unstaged_changes $gitdir
then
echo "unstaged $gitdir"
fi
if ! uncommited_changes $gitdir
then
echo "uncommitted $gitdir"
fi
done
}