목표는 쉘 명령으로 평가할 수있는 명확한 상태를 얻는 것입니다.
시도 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!!!'
대신