Альтернативой проверке, является ли вывод git status --porcelain
пустым, является проверка каждого условия, которое вам небезразлично.Можно не всегда заботиться, например, если в выводе git status
.
присутствуют неотслеживаемые файлы. Например, чтобы увидеть, есть ли какие-либо локальные неизмененные изменения, вы можете посмотреть код возврата:
git diff --exit-code
Чтобы проверить, есть ли какие-либо изменения, которые поставлены, но не зафиксированы, вы можете использовать код возврата:
git diff --cached --exit-code
Наконец, если вы хотите знать, есть лиЕсли в рабочем дереве есть неотслеживаемые файлы, которые не игнорируются, вы можете проверить, является ли вывод следующей команды пустым:
git ls-files --other --exclude-standard --directory
Обновление: Вы спросите ниже, можете ли выизмените эту команду, чтобы исключить каталоги в выводе.Вы можете исключить пустые каталоги, добавив --no-empty-directory
, но чтобы исключить все каталоги в этом выводе, я думаю, вам придется отфильтровать вывод, например:
git ls-files --other --exclude-standard --directory | egrep -v '/$'
От -v
до egrep
означает вывод только тех строк, которые не соответствуют шаблону, а шаблон соответствует любой строке, заканчивающейся /
.