Ja esat izmantojis GitHub un dodat priekšroku komandrindai, piemēram, man, lai visu paveiktu bez sarežģījumiem GUI, iespējams, pamanījāt, kā GitHub sāka izmantot savu ne tik jauno rīku, ko sauc par “gh”. Nolēmu pamēģināt, jo galu galā tas izskatījās daudzsološi. Un man personīgi ļoti patika – tik ļoti, ka gribējās par to uztaisīt rakstu!
Tomēr, pirms sākam, man ir jāpaskaidro vairāki termini, kurus izmantošu šajā rakstā.
“GH” nozīmē “GitHub”. No šejienes cēlies arī rīka nosaukums, tāpēc to nevar sajaukt ar pašu Git. Lai izskaidrotu, ko tas dara kopumā, varat izveidot, sadalīt, dzēst, pārlūkot repo; izveidot pull pieprasījumus; un vēl daudz vairāk. Ja nevarat atrast funkciju, bet arī nevēlaties pamest termināli, tas nodrošina arī teksta pārlūkprogrammu, lai jūs varētu pārlūkot lapas GitHub.
“CLI” nozīmē “Ckomandu Line Iinterfeiss”. Šis terminālis (vai sistēmā Windows komandu uzvedne) ir viens no tiem. Ja blakus lietotnes nosaukumam ir pievienots “CLI” (šajā rakstā “Git CLI”), tas nozīmē, ka lietotne darbojas tikai caur termināli. Un “Git CLI” šajā kontekstā ir Git, ko mēs zinām. Tāpat kā komanda, ar kuru mēs veicam saistības vai pārbāzes.
GUI apzīmē "Grafisks Uredzēt Interface”, un tā ir saskarne, kurā mēs “pārvietojamies”. Labāk sakot, darbvirsmas vide kopumā ir GUI.
“API atslēga” ir sava veida slepena virkne/fails, ko izmantojat, lai autentificētos pakalpojumiem. Uzmanieties, ka, veicot autentifikāciju ar to, tas apiet 2 faktoru autentifikāciju un tā tālāk. Tāpēc glabājiet tos drošībā un vietā, kas nav citiem līdzekļiem sasniedzama.
Pirmkārt, kas ir šis rīks? Kā tas apstrādā darbības, kuras mēs veiktu, izmantojot Git CLI?
“gh” var uzskatīt par atvērtu avotu (Source Code) iesaiņojums, izmantojot pašu Git CLI un GitHub API, lai paveiktu lietas. Faktiski jūs pat varat nodot parametrus izmantotajām Git komandām! Par tiem es pievērsīšos vēlāk.
Instalēšana un iestatīšana
Ņemiet vērā, ka instalēšanu es iziešu, izmantojot Termuks. Bet procedūrai vajadzētu būt gandrīz tādai pašai, kāda varētu būt uz Debian balstītā distributīvā — piemēram, Ubuntu tā ir pieejama oficiālajos repo. Man šķiet, ka operētājsistēmai Windows ir nepieciešams vai nu CygWin, vai WSL. ¯\_(ツ)_/¯
# Vispirms instalēsim rīku. Arī Git instalēšana, jo tā ir gh aizmugursistēma #. $ pkg instalēt git gh -y # Tad pirms visa, mums ir jāveic autentifikācija. Tādējādi rīka datu bāzē tiks saglabāta # jauna API atslēga, tāpēc jums vairs nebūs jāautentificē #. Ja jau esat iestatījis GITHUB_TOKEN, tas nedarbosies, tāpēc vispirms atiestatiet # to. :) $ gh autorizēt pieteikšanos
Tagad, pirms mēs turpinām šeit, man ir jānorāda vairākas lietas.
- Pirmkārt, neizvēlieties “GitHub Enterprise Server” ja jums nav kāda veida pašmitināta GitHub.
- Otrkārt, izmantojiet SSH, nevis HTTPS, ja jūsu GitHub kontam ir pievienota publiskā atslēga. Ja pazaudēsit API atslēgu, jūs vismaz nezaudēsit savu SSH atslēgu, tāpēc tā var būt arī laba atkāpšanās metode.
- Treškārt, izvēlieties pieteikšanos, izmantojot pārlūkprogrammu tikai tad, ja jums nav API atslēgas pie rokas! Patiešām, nebūtu jēgas izmantot citu atslēgu, kamēr tāda jau ir.
Kad esat pabeidzis iestatīšanu, pastāstiet par to Git CLI.
$ gh auth setup-git
Tas nodrošinās nepieciešamās Git CLI konfigurācijas, ja jūsu refleksi iedarbosies un liks jums izmantot Git, nevis GH.
Dažas pamata komandas
Tagad, kad esat iestatījis GH, ļaujiet man iemācīt jums vairākas pamata komandas stāstā.
Pirmkārt, pieņemsim, ka vēlaties izveidot mana vietējo manifestu repo izvilkšanas pieprasījumu. Vispirms jūs vēlaties to dakšiņu.
$ gh repo fork windowz414/platform_manifest! windowz414/platform_manifest jau pastāv? Vai vēlaties klonēt dakšiņu? Jā Klonēšana uz 'platform_manifest'... tālvadības pults: Objektu uzskaitīšana: 136, pabeigts. tālvadības pults: Objektu skaitīšana: 100% (136/136), darīts. tālvadības pults: objektu saspiešana: 100% (81/81), gatavs. tālvadības pults: Kopā 136 (delta 46), atkārtoti izmantoti 89 (delta 12), atkārtoti izmantoti iepakojumi 0 Saņemošie objekti: 100% (136/136), 30.70 KiB | 166.00 KiB/s, darīts. Deltas atrisināšana: 100% (46/46), gatavs. Atjaunināšana augšup pa straumi no github.com:windowz414/platform_manifest * [jauna filiāle] amyrom/rosie -> upstream/amyrom/rosie * [jauna filiāle] aosp-eleven -> upstream/aosp-eleven * [jaunā filiāle] aosp-ten -> augštecē/aosp-ten * [jauns atzars] bultiņa-11.0 -> augštece/bultiņa-11.0 * [jauns atzars] cm-14.1 -> augštece/cm-14.1 * [jauns atzars] punkts11 -> augštece/punkts11 * [jauns atzars ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [jauns atzars] fluid-11 -> upstream/fluid-11 * [jauns atzars] fox_7.1 -> upstream/fox_7.1 * [jaunā atzara] hentai-rika -> augštecē/hentai-rika * [jaunā atzara] ion-pie -> upstream/ion-pie * [jaunā atzara] cilts-15.1 -> augštecē/līnija-15.1 * [jaunā atzara] līnija -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 * [jaunā atzara] galvenais -> augštecē/galvenā * [jaunā filiāle] mkn-mr1 -> augštecē/mkn-mr1 * [jaunā atzara] revengeos-r11.0 -> augštecē/revengeos-r11.0. 1 * [jaunā atzara] stellar-S1 -> augštecē/zvaigžņu-S11 * [jaunā atzara] teos-n -> augštecē/teos-n * [jaunā filiāle] weebprojekt-11 -> augštecē/weebprojekt-XNUMX ✓ Klonēta dakša
Pieņemsim, ka jums ir atsevišķa eksperimentu organizācija ar nosaukumu “wz414-labs”, kuru vēl neesat atradis savā personīgajā profilā un vēlaties tur klonēt, pēc tam atveriet izvilkšanas pieprasījumu. Jūs vēlaties arī klonēt zaru “cm-14.1”, lai jums vairs nebūtu jāveic git-checkout.
$ gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Izveidots fork wz414-labs/platform_manifest? Vai vēlaties klonēt dakšiņu? Jā Klonēšana uz 'platform_manifest'... tālvadības pults: Objektu uzskaitīšana: 136, pabeigts. tālvadības pults: Objektu skaitīšana: 100% (136/136), darīts. tālvadības pults: objektu saspiešana: 100% (81/81), gatavs. tālvadības pults: Kopā 136 (delta 46), atkārtoti izmantoti 89 (delta 12), atkārtoti izmantoti iepakojumi 0 Saņemošie objekti: 100% (136/136), 30.70 KiB | 120.00 KiB/s, darīts. Deltas atrisināšana: 100% (46/46), gatavs. Atjaunināšana augšup pa straumi no github.com:windowz414/platform_manifest * [jauna filiāle] amyrom/rosie -> upstream/amyrom/rosie * [jauna filiāle] aosp-eleven -> upstream/aosp-eleven * [jaunā filiāle] aosp-ten -> augštecē/aosp-ten * [jauns atzars] bultiņa-11.0 -> augštece/bultiņa-11.0 * [jauns atzars] cm-14.1 -> augštece/cm-14.1 * [jauns atzars] punkts11 -> augštece/punkts11 * [jauns atzars ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [jauns atzars] fluid-11 -> upstream/fluid-11 * [jauns atzars] fox_7.1 -> upstream/fox_7.1 * [jaunā atzara] hentai-rika -> augštecē/hentai-rika * [jaunā atzara] ion-pie -> upstream/ion-pie * [jaunā atzara] cilts-15.1 -> augštecē/līnija-15.1 * [jaunā atzara] līnija -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 * [jaunā atzara] galvenais -> augštecē/galvenā * [jaunā filiāle] mkn-mr1 -> augštecē/mkn-mr1 * [jaunā atzara] revengeos-r11.0 -> augštecē/revengeos-r11.0. 1 * [jaunā filiāle] stellar-S1 -> augštecē/zvaigžņu-S11 * [jaunā atzara] teos-n -> augštecē/teos-n * [jaunā filiāle] weebprojekt-11 -> augštecē/weebprojekt-XNUMX ✓ Klonēta dakša
Redziet, ka es neizmantoju “-b cm-14.1” un tā vietā izmantoju garo argumentu. No šī raksta datuma, 16. gada 2022. februāra, GH ir kļūda, ka tas pareizi nenodod īsus argumentus Git CLI, tāpēc tas ir jādara kā garie argumenti.
Kad tas ir izdarīts, jūs regulāri ievadījāt mapi, veicāt izmaiņas, izdarījāt to, pēc tam to pārspiedāt un esat gatavs izpildīt izvilkšanas pieprasījumu. Šim nolūkam viss, kas jums nepieciešams, ir vienkāršs
$ gh pr create --branch="cm-14.1" Vai izveido wz414-labs:cm-14.1 izvilkšanas pieprasījumu uz cm-14.1 programmā windowz414/platform_manifest? Nosaukums teos: Mainīt uz Git-Polycule? Ķermenis ? Ko tālāk? Iesniedziet https://github.com/windowz414/platform_manifest/pull/1
Ja nepievienosiet “–filiāle=cm-14.1”, jūs izveidosit PR virzienā uz “galveno” atzaru, kas, protams, radīs problēmas, ja tas netiks apstrādāts pareizi.
Un tagad man ir jāapvieno šis PR, vai ne? Tāpēc es vispirms klonēju repo, izrakstos uz piešķirto filiāli un vispirms saskaitu PR.
# Vispirms klonējiet. $ git klons https://github.com/windowz414/platform_manifest Klonēšana 'platform_manifest'... tālvadības pults: Objektu uzskaitīšana: 136, pabeigts. tālvadības pults: Objektu skaitīšana: 100% (136/136), darīts. tālvadības pults: objektu saspiešana: 100% (81/81), gatavs. tālvadības pults: Kopā 136 (delta 46), atkārtoti izmantoti 89 (delta 12), atkārtoti izmantoti iepakojumi 0 Saņemošie objekti: 100% (136/136), 30.70 KiB | 137.00 KiB/s, darīts. Deltas atrisināšana: 100% (46/46), gatavs. # Pēc tam izrakstīšanās uz filiāli. $ git checkout cm-14.1 filiāle “cm-14.1”, kas iestatīta, lai izsekotu “origin/cm-14.1”. Pārslēgts uz jaunu filiāli “cm-14.1” # Un tagad tiek uzskaitīti PR. $ gh pr saraksts Tiek rādīts 1 no 1 atvērtā izvilkšanas pieprasījuma logāz414/platform_manifest #1 teos: Mainīt uz Git-Polycule wz414-labs:cm-14.1
Tagad, kad mēs redzam, ka pastāv PR, lai mainītu tālvadības pulti uz “Git-Polycule”, redzēsim, kas ar to ir mainījies.
$ gh pr diff 1 diff --git a/teos.xml b/teos.xml indekss b145fc0..3aadeb6 100644 --- a/teos.xml +++ b/teos.xml @@ -2,7 +2,7, 414 @@
Šķiet daudzsološi! Laiks apvienoties!
$ gh pr sapludināšana 1 ? Kādu sapludināšanas metodi vēlaties izmantot? Pārbāzt un apvienot? Ko tālāk? Iesniegt ✓ Pārbāzts un apvienots vilkšanas pieprasījums Nr. 1 (teos: mainīt uz Git-Polycule)
Tagad, kad esmu to apvienojis, varat izdzēst savu dakšiņu.
$ gh repo dzēst -- apstipriniet wz414-labs/platform_manifest ✓ Izdzēsts repozitorijs wz414-labs/platform_manifest
Jūs redzat, ka repo izdzēsa uzreiz bez apstiprinājuma pieprasījuma, jo es tur nodevu parametru “–confirm”. Ja jūs to neizturētu, jūs iegūtu šo:
$ gh repo izdzēst windows414/systemd? Ievadiet windows414/systemd, lai apstiprinātu dzēšanu:
Un jums būs jāievada viss repo nosaukums. Laika tērēšana…
Kopsavilkums
Vienkārši sakot, "gh" ir diezgan vienkāršots Git CLI/Curl ietvars, kas apvieno vienkāršas Git darbības un GitHub API lietas zem viena jumta. Kā jūs to izmantojat? Vai tas jums šķiet daudzsološi tāpat kā man? Ar nepacietību gaidīsim no jums!