tous les.
comment pouvons-nous obtenir le résultat d'état dans le shell?
J'ai essayé d' git status
, mais il retourne toujours 0, même si nous avons commis.
git status
echo $? #this is always 0
J'ai une idée mais je pense que c'est plutôt une mauvaise idée.
if [ git status | grep -i -c "[a-z]"> 2 ];
then
code for change...
else
code for nothing change...
fi
d'une autre manière?
mise à jour,et maintenant ce résoudre à voir la Marque de Longair 'post
J'ai essayé ceci , mais à cause d'un problème.
if [ -z $(git status --porcelain) ];
then
echo "IT IS CLEAN"
else
echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
echo git status
fi
lorsque l'
il obtiendra une erreur , [: ??: opérateur binaire prévu
maintenant , je suis à la recherche de l'homme et essayer de le git diff.
===================code pour mon espoir, et l'espoir de mieux répondre à======================
#if [ `git status | grep -i -c "$"` -lt 3 ];
# change to below code,although the above code is simple, but I think it is not strict logical
if [ `git diff --cached --exit-code HEAD^ > /dev/null && (git ls-files --other --exclude-standard --directory | grep -c -v '/$')` ];
then
echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
exit 1
else
exit 0
fi