Até onde eu sei, não há como fazer isso diretamente com o git.
No entanto, você pode usar o seguinte fragmento de script de shell para verificar muito mais rapidamente:
#!/bin/sh
[ 'git status --porcelain=1 | wc -l' -ne 0 ] && exit 1
O que isto faz é obter saída parseable da máquina do comando git status
(que é executado mais rápido que git diff
em repositórios grandes porque está apenas verificando a presença de mudanças, não o que elas são), contando o número de linhas (o formato --porcelain=1
retornará exatamente uma linha para cada arquivo modificado, e nenhuma linha se nenhuma for modificada) e, em seguida, sairá com um status de saída diferente de zero se o número for diferente de zero.
Você também pode incorporar isso diretamente em qualquer script que esteja gerando o prompt, retirando a expressão condicional (o bit no []
) e usando isso em qualquer declaração if está verificando o código de saída para git diff --quiet
atualmente.