Ziel ist es, einen eindeutigen Status zu erhalten, der in einem Shell-Befehl ausgewertet werden kann.
Ich habe es versucht, git status
aber es gibt immer 0 zurück, auch wenn Elemente festgeschrieben werden müssen.
git status
echo $? #this is always 0
Ich habe eine Idee, aber ich denke, es ist eher eine schlechte Idee.
if [ git status | grep -i -c "[a-z]"> 2 ];
then
code for change...
else
code for nothing change...
fi
auf andere Weise?
Update mit folgender Lösung, siehe Mark Longairs Beitrag
Ich habe es versucht, aber es verursacht ein Problem.
if [ -z $(git status --porcelain) ];
then
echo "IT IS CLEAN"
else
echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
echo git status
fi
Ich erhalte den folgenden Fehler [: ??: binary operator expected
Jetzt schaue ich den Mann an und probiere den Git Diff aus.
=================== Code für meine Hoffnung und hoffentlich bessere Antwort ======================
#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
$(git status --porcelain)
, so wie ich es Ihnen gesagt habe!
$(git status --porcelain)
. Wenn Sie Ausrufezeichen in Ihre Nachricht einfügen möchten, müssen Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen verwenden - dh es sollteecho 'PLEASE COMMIT YOUR CHANGE FIRST!!!'
stattdessen sein