Компьютеры · Инструкция
Как проверить ref в Git без парсинга git branch
Скриптам лучше не искать имя ветки строкой в выводе `git branch`. `git show-ref --verify` проверяет полное имя ссылки и
Короткий ответ
Для проверки существования одного ref используйте `git show-ref --exists refs/heads/NAME`: код `0` означает, что ref есть, `2` — что его нет.
Что делать
- 1. Укажите полный ref: Для локальной ветки используйте `refs/heads/name`, для тега — `refs/tags/name`, для remote-tracking branch — `refs/remotes/..`.
- 2. Проверьте существование: Выполните `git show-ref --exists refs/heads/release`.
- 3. Обработайте код возврата: `0` — ref существует, `2` — отсутствует, `1` — другая ошибка проверки.
- 4. Нужна совместимость со старым Git: Альтернатива для скриптов — `git show-ref --verify --quiet -- refs/heads/release`, где отсутствие даёт код `1`.
Коды `--exists`
- 0 — ref существует
- 2 — ref отсутствует
- 1 — ошибка проверки, отличная от отсутствия ref
Важно
`--exists` проверяет наличие ref, но не проверяет, что ref разрешается в существующий object; для другой задачи используйте соответствующую проверку.
Как понять, что всё сработало
- `git show-ref --exists <ref>` возвращает `0` для существующего ref и `2` для отсутствующего.
- Проверяется полное имя `refs/heads/..`, `refs/tags/..` или `refs/remotes/..`, чтобы исключить неоднозначность.
Что учитывать
`--exists` проверяет наличие ref, но не проверяет, что ref разрешается в существующий object; для другой задачи используйте соответствующую проверку.
Источники и проверка
Фактическая часть сверена по первичным источникам (в т.ч. git-show-ref Documentation). Пример и формулировки — редакция N1RO на 2026-09-18.