Питання ОП вже більше 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
?