目的是获得可以在shell命令中评估的明确状态。
我尝试过,git status
但是即使有要提交的项目,它也总是返回0。
git status
echo $? #this is always 0
我有一个主意,但我认为这是一个坏主意。
if [ git status | grep -i -c "[a-z]"> 2 ];
then
code for change...
else
code for nothing change...
fi
还有其他方法吗?
使用以下解决方法进行更新,请参阅Mark Longair的帖子
我试过了,但这会引起问题。
if [ -z $(git status --porcelain) ];
then
echo "IT IS CLEAN"
else
echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
echo git status
fi
我收到以下错误 [: ??: binary operator expected
现在,我看着那个男人,尝试git diff。
==================我的希望,希望更好的答案=======================
#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)
,就像我告诉您的一样!
$(git status --porcelain)
。另外,如果你想要把感叹号在你的消息,你需要使用单引号,而不是双引号-也就是说,它应该是echo 'PLEASE COMMIT YOUR CHANGE FIRST!!!'
代替