Если вы, как и я, пользуетесь GitHub и предпочитаете командную строку, чтобы все делать без каких-либо сложностей с графическим интерфейсом, вы могли заметить, что GitHub начал использовать свой не очень новый инструмент под названием «gh». Я решил попробовать, потому что он выглядел многообещающе. И лично мне он очень понравился — настолько, что я захотел написать об этом статью!
Прежде чем мы начнем, я должен объяснить несколько терминов, которые я буду использовать в этой статье.
«GH» означает » G it H ub». Отсюда происходит и название инструмента, поэтому его нельзя спутать с самим Git’ом. Чтобы объяснить, что он делает в общем, вы можете создавать, форкать, удалять, просматривать репозитории; создавать запросы на исправление; и многое другое. Если вы не можете найти нужную функцию, но не хотите выходить из терминала, он также предоставляет текстовый браузер для просмотра страниц в GitHub. «CLI» расшифровывается как «C ommand L ine I nterface». Терминал (или, в Windows, Командная строка) является одним из них. Если к названию приложения добавлено «CLI» («Git CLI» для этой статьи), это означает, что приложение работает только через терминал. А «Git CLI» в данном контексте — это, ну, тот Git, который мы знаем. Например, команда, с помощью которой мы делаем коммиты или ребазы.GUI означает » G raphical U ser I nterface», и это интерфейс, по которому мы «перемещаемся». Лучше сказать, что среда рабочего стола в целом — это графический интерфейс. API-ключ» — это своего рода секретная строка/файл, который вы используете для аутентификации в сервисах. Имейте в виду, что при аутентификации с его помощью обходится двухфакторная аутентификация и так далее. Поэтому храните их в безопасном месте, недоступном для других средств.
Прежде всего, что это за инструмент? Как он обрабатывает операции, которые мы выполняем через Git CLI?
«gh» можно рассматривать как обертку с открытым исходным кодом (Source Code), использующую сам Git CLI и API GitHub для выполнения задач. На самом деле, вы даже можете передавать параметры используемым Git-командам! Я расскажу об этом позже.
Установка и настройка
Имейте в виду, что установка выполняется с помощью Termux. Но процедура должна быть практически такой же, как и на дистрибутиве, основанном на Debian — например, Ubuntu имеет его в своих официальных репозиториях. Для Windows, ну, вам нужен либо CygWin, либо WSL, я полагаю. ¯_(ツ)_/¯ # Сначала установим инструмент. Также устанавливаем Git, так как он является бэкендом.
# для gh.
$ pkg install git gh -y
# Затем, перед началом работы, нам нужно пройти аутентификацию. Это позволит сохранить
# новый ключ API в базе данных инструмента, так что вам не нужно будет проходить аутентификацию
# снова. Если вы уже установили GITHUB_TOKEN, это не сработает, поэтому сначала снимите его.
# его сначала.:)
$ gh auth loginНу, прежде чем мы продолжим, я должен отметить несколько вещей.
- Во-первых, не выбирайте «GitHub Enterprise Server» если у вас нет собственного хостинга GitHub.
- Во-вторых, используйте SSH вместо HTTPS, если в вашем аккаунте GitHub добавлен открытый ключ. Если вы потеряете API-ключ, вы, по крайней мере, не потеряете SSH-ключ, так что это также может быть хорошим запасным вариантом.
- В-третьих, входите в систему через браузер только если у вас нет под рукой ключа API! Действительно, нет смысла заводить еще один ключ, когда у вас уже есть один.
После того, как вы все настроили, давайте расскажем об этом Git CLI.$ gh auth setup-gitЭто создаст необходимые конфигурации Git CLI на случай, если ваши рефлексы ворвутся и заставят вас использовать Git вместо GH.
Несколько основных команд
Теперь, когда вы настроили GH, позвольте мне научить вас нескольким основным командам на основе истории. Прежде всего, допустим, вы хотите создать запрос на притяжение к моему локальному репозиторию manifests. Для начала вам нужно его форкнуть.$ gh repo fork windowz414/platform_manifest
! windowz414/platform_manifest уже существует
? Вы хотите клонировать форк? Да
Клонирование в ‘platform_manifest’…
remote: Перечисление объектов: 136, готово.
remote: Подсчет o
If you have been using GitHub and preferring the command line like me to get everything done without any complications on GUI, you might have noticed how GitHub started to utilize their not-so-new tool called “gh”. I decided to give it a shot, because it looked promising after all. And I personally liked it a lot – So much that I wanted to make an article about it!
Before we begin though, I need to explain several terms Ill be using in this article.
«GH» означает » G it H ub». Отсюда происходит и название инструмента, поэтому его нельзя спутать с самим Git’ом. Чтобы объяснить, что он делает в общем, вы можете создавать, форкать, удалять, просматривать репозитории; создавать запросы на исправление; и многое другое. Если вы не можете найти нужную функцию, но не хотите выходить из терминала, он также предоставляет текстовый браузер для просмотра страниц в GitHub. «CLI» расшифровывается как «C ommand L ine I nterface». Терминал (или, в Windows, Командная строка) является одним из них. Если к названию приложения добавлено «CLI» («Git CLI» для этой статьи), это означает, что приложение работает только через терминал. А «Git CLI» в данном контексте — это, ну, тот Git, который мы знаем. Например, команда, с помощью которой мы делаем коммиты или ребазы.GUI означает » G raphical U ser I nterface», и это интерфейс, по которому мы «перемещаемся». Лучше сказать, что среда рабочего стола в целом — это графический интерфейс. API-ключ» — это своего рода секретная строка/файл, который вы используете для аутентификации в сервисах. Имейте в виду, что при аутентификации с его помощью обходится двухфакторная аутентификация и так далее. Поэтому храните их в безопасном месте, недоступном для других средств.
Прежде всего, что это за инструмент? Как он обрабатывает операции, которые мы выполняем через Git CLI?
«gh» можно рассматривать как обертку с открытым исходным кодом (Source Code), использующую сам Git CLI и API GitHub для выполнения задач. На самом деле, вы даже можете передавать параметры используемым Git-командам! Я расскажу об этом позже.
Установка и настройка
Имейте в виду, что установка выполняется с помощью Termux. Но процедура должна быть практически такой же, как и на дистрибутиве, основанном на Debian — например, Ubuntu имеет его в своих официальных репозиториях. Для Windows, ну, вам нужен либо CygWin, либо WSL, я полагаю. ¯_(ツ)_/¯ # Сначала установим инструмент. Также устанавливаем Git, так как он является бэкендом.
# для gh.
$ pkg install git gh -y
# Затем, перед началом работы, нам нужно пройти аутентификацию. Это позволит сохранить
# новый ключ API в базе данных инструмента, так что вам не нужно будет проходить аутентификацию
# снова. Если вы уже установили GITHUB_TOKEN, это не сработает, поэтому сначала снимите его.
# его сначала.:)
$ gh auth loginНу, прежде чем мы продолжим, я должен отметить несколько вещей.
- Во-первых, не выбирайте «GitHub Enterprise Server» если у вас нет собственного хостинга GitHub.
- Во-вторых, используйте SSH вместо HTTPS, если в вашем аккаунте GitHub добавлен открытый ключ. Если вы потеряете API-ключ, вы, по крайней мере, не потеряете SSH-ключ, так что это также может быть хорошим запасным вариантом.
- В-третьих, входите в систему через браузер только если у вас нет под рукой ключа API! Действительно, нет смысла заводить еще один ключ, когда у вас уже есть один.
После того, как вы все настроили, давайте расскажем об этом Git CLI.$ gh auth setup-gitЭто создаст необходимые конфигурации Git CLI на случай, если ваши рефлексы ворвутся и заставят вас использовать Git вместо GH.
Несколько основных команд
Теперь, когда вы настроили GH, позвольте мне научить вас нескольким основным командам на основе истории. Прежде всего, допустим, вы хотите создать запрос на притяжение к моему локальному репозиторию manifests. Для начала вам нужно его форкнуть.$ gh repo fork windowz414/platform_manifest
! windowz414/platform_manifest уже существует
? Вы хотите клонировать форк? Да
Клонирование в ‘platform_manifest’…
remote: Перечисление объектов: 136, готово.
remote: Подсчет ow, мне нужно объединить этот PR, верно? Поэтому я сначала клонирую репозиторий, проверяю назначенную ветку и сначала составляю список PR.# Сначала клонирование.
$ git clone https://github.com/windowz414/platform_manifest
Клонирование в ‘platform_manifest’…
remote: Перечисление объектов: 136, готово.
remote: Подсчет объектов: 100% (136/136), готово.
remote: Сжатие объектов: 100% (81/81), выполнено.
remote: Всего 136 (дельта 46), повторно использовано 89 (дельта 12), пакетно-использованных 0
Получение объектов: 100% (136/136), 30.70 KiB | 137.00 KiB/s, готово.
Разрешение дельт: 100% (46/46), выполнено.
# Затем проверяем ветку.
$ git checkout cm-14.1
Ветвь ‘cm-14.1’ установлена для отслеживания ‘origin/cm-14.1’.
Переключились на новую ветку ‘cm-14.1’.
# А теперь выводим список PR.
$ gh pr list
Показано 1 из 1 открытого запроса на притяжение в windowz414/platform_manifest
#1 teos: Изменение на Git-Polycule wz414-labs:cm-14.1Когда мы видим, что есть PR для изменения remote на «Git-Polycule», давайте посмотрим, что изменилось с ним.$ gh pr diff 1
diff —git a/teos.xml b/teos.xml
индекс b145fc0..3aadeb6 100644
— a/teos.xml
+++ b/teos.xml
@@ -2,7 +2,7 @@
<!— DEVICE TREESSeems promising! Пора объединяться! $ gh pr merge 1
? Какой метод слияния вы хотите использовать? Перебазирование и слияние
? Что дальше? Отправить
✓ Rebased and merged pull request #1 (teos: Change to Git-Polycule)Теперь, когда я слил его, вы можете удалить свой форк.$ gh repo delete —confirm wz414-labs/platform_manifest
✓ Deleted repository wz414-labs/platform_manifestВы видите, что репозиторий был удален без запроса подтверждения, потому что я передал туда параметр «-confirm». Если бы вы не передали его, то получили бы следующее:$ gh repo delete windowz414/systemd
? Введите windowz414/systemd для подтверждения удаления:И вам пришлось бы набирать полное имя репо. Потеря времени…
Резюме
Проще говоря, `gh` — это довольно упрощенная обертка Git CLI/Curl, объединяющая простые операции Git и GitHub API под одной крышей. Как вы используете его? Кажется ли он вам многообещающим, как и мне? С нетерпением ждем ваших комментариев!
Last modified: 06.08.2022