Одна из главных проблем при работе с GitHub – отсутствие стандартных инструментов, которые бы позволили выполнить пулл-реквест из консоли. Но с официальной утилитой GitHub CLI можно будет забыть о необходимости установки GUI-версий или создании пулл-реквестов через веб-интерфейс.
Что может GitHub CLI
GitHub CLI пока предлагается в бета-версии. Утилита позволяет создавать пулл-реквесты непосредственно из консоли.
Чтобы создать пулл-реквест, достаточно ввести команду:
gh pr [status, list, view, checkout, create]
Как видите, команда позволяет узнать статус пулл-реквеста, просмотреть его или список всех активных запросов, создать новый пулл-реквест или отметить изменения. Подробная информация о поддерживаемых командах и их флагах представлена в документации.
Также GitHub CLI позволяет создавать issue - описывать найденные в коде проблемы. Синтаксис аналогичный (варианты использования - в квадратных скобках):
gh issue [status, list, view, create]
Кроме того, есть команда для вызова справки gh help
. Вы также можете использовать ключ --help
в конце строки с любой командой.
Особенности утилиты
GitHub CLI написана на языке Go. Ранее на Go создали утилиту Hub, но она не получила особого распространения.
GitHub CLI запускается в Linux, MacOS и Windows. Она гораздо удобнее и стабильнее Hub. Так, если вы не указали в командной строке тему и содержание пулл-реквеста, утилита позволит вам это сделать, предоставив в консоли интерактивное поле для ввода.
Когда вы отправляете пулл-реквест через утилиту GitHub CLI, форк master-ветки создается автоматически. Но если вы сгенерировали его ранее вручную, этот шаг пропускается.
Почему пулл-реквесты так важны
Система контроля версий Git логически построена на дереве коммитов. Коммит – это состояние кода в определенный момент разработки. Цепочка коммитов объединяется в ветвь. В древовидной структуре Git ветви отделяются от главной ветки master и друг от друга.
Обычно в рамках одной ветки разрабатывают определенный функционал. Когда же нужно объединить одну ветку с другой (например, ветвь с новым функционалом и master с гарантированно рабочим кодом), создают пулл-реквест.
Фактически пулл-реквест - это запрос на добавление изменений из одной ветки в другую. Вся система версий кода в Git базируется на пулл-реквестах. Если автор оригинальной ветки принимает пулл-реквест, то он вносит в свой код изменения из новой ветви. При этом могут возникать конфликты: например, если в старой и новой версиях разные версии определенных строк). Их придется оперативно устранить, чтобы завершить слияние ветвей.
Таким образом, пулл-реквесты позволяют обновлять оригинальный код, добавляя в него новые функциональные возможности. Чаще всего это крупные изменения, но технически и мелкие багфиксы тоже можно проводить через пулл-реквесты.
Польза от Microsoft
Когда Microsoft в 2018 году купила GitHub за 7,5 млрд долларов, многие разработчики стали посыпать голову пеплом. Они считали, что политика бесплатного хранения репозиториев изменится, и пользоваться сервисом на прежних условиях будет нельзя. Ожидали и ухудшения качества продукта.
Но прогнозы пессимистов не оправдались. Инсайдеры утверждали, что перед покупкой у GitHub накопился огромный технический долг. В частности, старые версии сервиса, написанные на Rails, грешили большим количеством «костылей».
И Microsoft направила значительные силы, чтобы решить проблемы GitHub. А когда технический долг перестал висеть дамокловым мечом, стала активно развивать сервис. И GitHub CLI - ещё один шаг в этом направлении.
Загрузить утилиту можно из репозитория на GitHub.