Как проверить, нет ли никаких фиксаций в текущей ветке?

Цель состоит в том, чтобы получить однозначный статус, который можно оценить в команде оболочки.

Я пробовал 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

в любом другом случае ?


обновление со следующим решением, см. Сообщение Марка Лонгаира

Я пробовал это, но это вызывает проблему.

if [ -z $(git status --porcelain) ];
then
    echo "IT IS CLEAN"
else
    echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
    echo git status
fi

Я получаю следующую ошибку [: ??: теперь ожидается бинарный оператор

, я Я смотрю на этого человека и пробую 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
166
задан Rob Rombouts 24 January 2019 в 12:18
поделиться