n1ro°
RU

Компьютеры · Инструкция

git status --show-stash: как увидеть количество stash

git status --show-stash: как увидеть количество stash — флаг добавляет число сохранённых stash в обычный status и отдельную строку в porcelain v2.

Редакция N1RO · Проверено

Короткий ответ

`git status --show-stash` добавляет информацию о количестве сохранённых stash-записей. В porcelain v2 при ненулевом количестве появляется строка вида `# stash N`, что удобно и человеку, и скрипту.

Что показывает --show-stash

Git считает записи, доступные через stash reflog, и показывает их количество, если оно ненулевое. В обычном формате это дополнительная строка статуса, а в `--porcelain=v2` документирован заголовок `# stash <N>`. Это полезно в приглашении shell, диагностических командах и CI-скриптах, которым нужен стабильный машинно-читаемый формат. Если надо увидеть имена и описания каждого сохранения, всё равно используется `git stash list`.

Совет: Для автоматизации берите porcelain v2, а не локализованный обычный вывод.

Как использовать опцию вручную и в скрипте

  1. Создайте тестовый stash, если хотите увидеть результат: например, сохраните локальное изменение обычным `git stash push`.
  2. Запустите `git status --show-stash` и найдите строку со счётчиком stash.
  3. Для парсинга используйте `git status --porcelain=v2 --show-stash`, чтобы формат был предназначен для автоматизации.
  4. Извлекайте значение только из строки, начинающейся с `# stash`, а остальные неизвестные заголовки игнорируйте.
  5. Если нужна конкретная запись, после счётчика переходите к `git stash list` или `git stash show`.

Почему `stash@{0}` и число stash — не одно и то же

`stash@{0}` — имя самой свежей записи в reflog, а `# stash N` — общее количество доступных записей. Счётчик не сообщает, на какой ветке они были созданы и какие файлы содержат. После `drop` или `clear` число изменится. Для скриптов не следует рассчитывать, что строка присутствует всегда: документация говорит, что stash-header выводится, когда число ненулевое, поэтому отсутствие строки следует трактовать как ноль, а не как ошибку.

Предупреждение: Не используйте счётчик как доказательство сохранности конкретного файла — он показывает только число записей.

Для надёжного скрипта

  • использовать `--porcelain=v2`;
  • ожидать отсутствие строки при нуле;
  • не парсить декоративный обычный status;
  • для деталей обращаться к `git stash list`.

Как использовать счётчик stash в скриптах

Для автоматизации лучше опираться не на человекочитаемую строку обычного `git status`, а на стабильный porcelain-формат. В porcelain v2 при `--show-stash` Git добавляет заголовок со счётчиком stash. Скрипт должен обрабатывать отсутствие такой строки как нулевой результат, а не как ошибку, и не парсить локализованный текст интерфейса пользователя.

Пример в локальном prompt

Вместо отдельного вызова `git stash list | wc -l` оболочка может получить состояние рабочей директории и stash одним `git status --porcelain=v2 --branch --show-stash`. Если встретилась `# stash 3`, можно вывести компактный индикатор `stash:3`. При нуле строка может отсутствовать, поэтому скрипт должен заранее устанавливать значение 0.

Важно: `--show-stash` ничего не сохраняет и не восстанавливает; изменения stash выполняются другими командами.

Что учитывать

`stash@{0}` — имя самой свежей записи в reflog, а `# stash N` — общее количество доступных записей. Счётчик не сообщает, на какой ветке они были созданы и какие файлы содержат. После `drop` или `clear` число изменится. Для скриптов не следует рассчитывать, что строка присутствует всегда: документация говорит, что stash-header выводится, когда число ненулевое, поэтому отсутствие строки следует трактовать как ноль, а не как ошибку.

Источники и проверка

Инструкция составлена редакцией N1RO на 2026-09-23. Перед действием сверьте актуальные условия на официальном сайте сервиса или производителя.