Ако сте користеле GitHub и претпочитате командната линија како мене да заврши сè без никакви компликации на GUI, можеби сте забележале како GitHub почна да ја користи својата не толку нова алатка наречена „gh“. Решив да се обидам, затоа што изгледаше ветувачко на крајот на краиштата. И мене лично многу ми се допадна - толку многу што сакав да направам статија за тоа!
Сепак, пред да започнеме, треба да објаснам неколку термини што ќе ги користам во оваа статија.
„GH“ значи „GitHуб“. Оттука потекнува и името на алатката, така што не може да се меша со самиот Git. За да објасните што прави генерално, можете да креирате, раздвојувате, бришете, прелистувате репоа; креирајте барања за повлекување; и многу повеќе. Во случај да не можете да пронајдете функција, но исто така не сакате да го напуштите терминалот, тој исто така обезбедува текстуален прелистувач за да пребарувате страници во GitHub.
„CLI“ значи „Cкоманда LIne Iинтерфејс“. Тој терминал (или во Windows, Command Prompt) е еден од нив. Ако има „CLI“ додадено до името на апликацијата („Git CLI“ за овој напис), тоа значи дека апликацијата работи само преку терминал. И „Git CLI“ во овој контекст е, добро, Git што го знаеме. Како командата со која правиме обврзници или пребази.
GUI се залага за „Gрафички Uвиди Interface“ и тоа е интерфејсот по кој „навигираме“. Подобро кажано, десктоп опкружувањето воопшто е GUI.
„API клуч“ е некој вид тајна низа/датотека што ја користите за автентикација на услугите. Пазете се дека ја заобиколува автентикацијата со 2 фактори и така натаму кога автентицирате со неа. Затоа погрижете се да ги чувате безбедни и некаде што е недостапно со други средства.
Како прво, што е оваа алатка? Како се справува со операциите што би ги направиле преку Git CLI?
„gh“ може да се смета како отворен извор (Извор законик) обвивка што го користи самиот Git CLI и GitHub API за да ги заврши работите. Всушност, можете дури и да пренесувате параметри на Git командите што ги користи! Ќе навлезам во тие подоцна.
Инсталирање и поставување
Имајте на ум дека ќе поминам низ инсталацијата користејќи Термин. Но, постапката треба да биде приближно иста како што би можеле да ја имате на дистрибуција базирана на Debian - Ubuntu ја има на нивните официјални репоа на пример. За Windows, добро, ви треба или CygWin или WSL претпоставувам. ¯\_(ツ)_/¯
# Ајде прво да ја инсталираме алатката. Исто така, инсталирајте го Git бидејќи е заднината # за gh. $ pkg инсталирајте git gh -y # Потоа пред сè, треба да се автентицираме. Ова ќе зачува # нов API клуч во базата на податоци на алатката, така што нема да треба повторно да го автентицирате #. Ако веќе сте поставиле GITHUB_TOKEN, ова нема да работи така што прво ќе го отстраните #. :) $ gh авт. најавување
Сега, пред да продолжиме овде, треба да истакнам неколку работи.
- Прво, не избирајте „GitHub Enterprise Server“ ако немате некој вид на GitHub кој е домаќин на себе.
- Второ, користете SSH наместо HTTPS ако имате додаден јавен клуч на вашата сметка на GitHub. Во случај да го изгубите клучот API, барем нема да го изгубите вашиот SSH клуч за да може да биде и добар резервен метод.
- Трето, изберете најавување со прелистувач само ако немате клуч API при рака! Навистина, нема смисла да имате друг клуч додека веќе го имате.
Откако ќе завршите со поставувањето на работите, ајде да му кажеме на Git CLI за тоа.
$ gh auth setup-git
Ова ќе ги направи потребните Git CLI конфигурации само во случај вашите рефлекси да влезат и да ве натераат да користите Git наместо GH.
Некои основни команди
Сега кога го поставивте GH, дозволете ми да ве научам неколку основни команди во основа на приказна.
Најпрво, да речеме дека сакате да креирате барање за повлекување до моето складиште за локални манифести. Сакате прво да го разбиете.
$ gh repo fork windowz414/platform_manifest ! windowz414/platform_manifest веќе постои? Дали сакате да ја клонирате вилушката? Да Клонирање во „platform_manifest“... далечинско: Набројување на објекти: 136, завршено. далечински: Броење објекти: 100% (136/136), завршено. далечински: Компресирање на објекти: 100% (81/81), завршено. далечински: Вкупно 136 (делта 46), повторно употребени 89 (делта 12), пакување-повторно употребени 0 Објекти што примаат: 100% (136/136), 30.70 KiB | 166.00 KiB/s, готово. Решавање на делта: 100% (46/46), завршено. Ажурирање возводно Од github.com:windowz414/platform_manifest * [new branch] amyrom/rosie -> upstream/amyrom/rosie * [new branch] aosp-eleven -> upstream/aosp-eleven * [new branch] aosp-ten -> возводно/aosp-ten * [нова гранка] стрелка-11.0 -> возводно/стрелка-11.0 * [нова гранка] cm-14.1 -> горе/см-14.1 * [нова гранка] точка11 -> горе/точка11 * [нова гранка ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [new branch] fluid-11 -> upstream/fluid-11 * [new branch] fox_7.1 -> upstream/fox_7.1 * [нова гранка] hentai-rika -> upstream/hentai-rika * [new branch] ion-pie -> upstream/ion-pie * [new branch] lineage-15.1 -> upstream/lineage-15.1 * [нова гранка] лоза -17.1 -> upstream/lineage-17.1 * [new branch] lineage-18.1 -> upstream/lineage-18.1 * [new branch] lineage-18.1_teos -> upstream/lineage-18.1_teos * [new branch] lineage-19.0 - > upstream/lineage-19.0 * [new branch] main -> upstream/main * [new branch] mkn-mr1 -> upstream/mkn-mr1 * [new branch] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [нова гранка] stellar-S1 -> upstream/stellar-S11 * [new branch] teos-n -> upstream/teos-n * [new branch] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Клонирана вилушка
Потоа, да речеме дека имате посебна организација за вашите експерименти наречена „wz414-labs“, која сè уште не сте ја отвориле на вашиот личен профил и сакате да го клонирате таму, а потоа отворете го барањето за повлекување преку таму. Исто така, сакате да ја клонирате гранката „cm-14.1“ за да не треба повторно да ја вршите git-checkout.
$ gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Создадена вилушка wz414-labs/platform_manifest ? Дали сакате да ја клонирате вилушката? Да Клонирање во „platform_manifest“... далечинско: Набројување на објекти: 136, завршено. далечински: Броење објекти: 100% (136/136), завршено. далечински: Компресирање на објекти: 100% (81/81), завршено. далечински: Вкупно 136 (делта 46), повторно употребени 89 (делта 12), пакување-повторно употребени 0 Објекти што примаат: 100% (136/136), 30.70 KiB | 120.00 KiB/s, готово. Решавање на делта: 100% (46/46), завршено. Ажурирање возводно Од github.com:windowz414/platform_manifest * [new branch] amyrom/rosie -> upstream/amyrom/rosie * [new branch] aosp-eleven -> upstream/aosp-eleven * [new branch] aosp-ten -> возводно/aosp-ten * [нова гранка] стрелка-11.0 -> возводно/стрелка-11.0 * [нова гранка] cm-14.1 -> горе/см-14.1 * [нова гранка] точка11 -> горе/точка11 * [нова гранка ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [new branch] fluid-11 -> upstream/fluid-11 * [new branch] fox_7.1 -> upstream/fox_7.1 * [нова гранка] hentai-rika -> upstream/hentai-rika * [new branch] ion-pie -> upstream/ion-pie * [new branch] lineage-15.1 -> upstream/lineage-15.1 * [нова гранка] лоза -17.1 -> upstream/lineage-17.1 * [new branch] lineage-18.1 -> upstream/lineage-18.1 * [new branch] lineage-18.1_teos -> upstream/lineage-18.1_teos * [new branch] lineage-19.0 - > upstream/lineage-19.0 * [new branch] main -> upstream/main * [new branch] mkn-mr1 -> upstream/mkn-mr1 * [new branch] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [нова гранка] stellar-S1 -> upstream/stellar-S11 * [new branch] teos-n -> upstream/teos-n * [new branch] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Клонирана вилушка
Гледате дека не користев „-b cm-14.1“ и наместо тоа го направив долгиот аргумент. Од датумот на овој напис, 16 февруари 2022 година, GH има грешка што не пренесува кратки аргументи на Git CLI правилно и затоа треба да се направи како долги аргументи наместо тоа.
Откако тоа ќе се направи, редовно влегувавте во папката, ги правевте промените, извршивте, потоа ја туркавте и сте подготвени да направите барање за повлекување. За ова, се што ви треба е едноставно
$ gh pr креирај --branch="cm-14.1" Креирање барање за повлекување за wz414-labs:cm-14.1 во cm-14.1 во windowz414/platform_manifest ? Наслов teos: Промени во Git-Polycule? Тело ? Што е следно? Поднесете https://github.com/windowz414/platform_manifest/pull/1
Ако не приложите „–branch=cm-14.1“, ќе креирате ПР кон „главната“ гранка, што секако ќе предизвика проблеми кога не се постапува правилно.
И сега, треба да го спојам овој ПР, нели? Така, прво го клонирам репото, наплатувам во доделената филијала и прво ги наведувам ПР.
# Клонирање прво. $ git клон https://github.com/windowz414/platform_manifest Клонирање во „platform_manifest“... далечинско: Набројување на објекти: 136, завршено. далечински: Броење објекти: 100% (136/136), завршено. далечински: Компресирање на објекти: 100% (81/81), завршено. далечински: Вкупно 136 (делта 46), повторно употребени 89 (делта 12), пакување-повторно употребени 0 Објекти што примаат: 100% (136/136), 30.70 KiB | 137.00 KiB/s, завршено. Решавање на делта: 100% (46/46), завршено. # Потоа одјавување во филијалата. $ git исходот cm-14.1 гранка „cm-14.1“ поставена за следење на „потекло/cm-14.1“. Се префрли на нова гранка „cm-14.1“ # И сега се наведуваат ПР. $ gh pr листа Се прикажува 1 од 1 отворено барање за повлекување во windowz414/platform_manifest #1 teos: Промени во Git-Polycule wz414-labs:cm-14.1
Сега кога гледаме дека има ПР за промена на далечинското во „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, 414 @@
Изгледа ветувачко! Време е да се спојат!
$ gh pr спојување 1 ? Кој метод на спојување би сакале да го користите? Ребазирање и спојување? Што е следно? Поднесете ✓ Ребазирано и споено барање за повлекување #1 (тео: Промени во Git-Polycule)
Сега кога го споив, можете да ја избришете вашата вилушка.
$ gh repo delete --потврдете wz414-labs/platform_manifest ✓ Избришано складиште wz414-labs/platform_manifest
Гледате дека директно го избриша репото без барање за потврда бидејќи таму го поминав параметарот „–потврди“. Ако не го поминете, ќе го добиете ова:
$ gh repo избришете windowz414/systemd ? Напишете windowz414/systemd за да го потврдите бришењето:
И ќе треба да го напишете целото име на репо. Губење време…
Резиме
Едноставно кажано, `gh` е прилично поедноставен Git CLI/Curl обвивка што ги обединува едноставните операции на Git и работите на GitHub API под ист покрив. Како го користите? Дали ти изгледа ветувачко како мене? Очекувам да слушнеме од вас!