Питання ОП вже більше 9 років. Я не знаю, що man git-statusтоді говорив, але ось, що це говорить зараз:
--porcelain[=<version>]
Give the output in an easy-to-parse format for scripts. This is similar to the
short output, but will remain stable across Git versions and regardless of user
configuration. See below for details.
The version parameter is used to specify the format version. This is optional and
defaults to the original version v1 format.
Це говорить про те, що --porcelainаргумент добре підходить для тестування статусу репо на зміни.
Запишіть питання ОП: "Чи є якась булева перевірка, чи відбулися зміни з моменту останнього введення, або як я дійсно можу перевірити, чи є нові зміни в моєму локальному сховищі?"
Я не думаю, що такі bashбулеві типи даних самі по собі є , але це може бути досить близько:
[ -z "`git status --porcelain`" ] && echo "NULL-NO DIFFS" || echo "DIFFS EXIST"
Це може бути перетворено у if-then-elseвигляді форми для сценарію, або виконано як-є fm CLI, перебуваючи в папці git repo . В іншому випадку скористайтеся -Cопцією зі специфікацією шляху до репортажу, що цікавиться:
git -C ~/path/to/MyGitRepo status --porcelain
Додаток:
- Деякі радить використовувати
-u, --untracked-fileопцію, щоб уникнути статусу звітування про файли, які хочеться проігнорувати. Зауважте, що це має невдалий побічний ефект : файли, які нещодавно додаються, також не статуруються. Цей варіант корисний у деяких ситуаціях , але ретельно продумайте його перед використанням.
git status?