GitHub's maklik te brûken kommandorigelark: "gh"!

As jo ​​​​GitHub hawwe brûkt en de kommandorigel as ik de foarkar hawwe om alles sûnder komplikaasjes op GUI dien te krijen, hawwe jo miskien opfallen hoe't GitHub begon har net-sa-nije ark neamd "gh" te brûken. Ik besleat om it in skot te jaan, om't it nei alle gedachten kânsryk like. En ik persoanlik like it in protte - Sa folle dat ik woe meitsje in artikel oer it!

Foardat wy lykwols begjinne, moat ik ferskate termen útlizze dy't ik yn dit artikel sil brûke.

"GH" stiet foar "GitHub". Dit is wêr't de namme fan it ark ek komt, dus it kin net betize wurde mei Git sels. Om út te lizzen wat it docht yn it algemien, kinne jo meitsje, fork, wiskje, blêdzje repos; meitsje pull-oanfragen; en folle mear. As jo ​​​​gjin funksje kinne fine, mar ek de terminal net wolle ferlitte, leveret it ek in tekst-basearre browser foar jo om siden yn GitHub te blêdzjen.

"CLI" stiet foar "Command Line Iynterface". Dat Terminal (as yn Windows, Kommando-prompt) is ien fan har. As d'r in "CLI" is taheakke neist in appnamme ("Git CLI" foar dit artikel), betsjut dit dat de app allinich troch terminal rint. En "Git CLI" yn dizze kontekst is, goed, de Git dy't wy kenne. Lykas it kommando wy meitsje commits of rebases mei.

GUI stiet foar "Grapysk Ute wêzen Interface" en it is de ynterface wêrop wy "navigearje". Better sein, in buroblêdomjouwing yn 't algemien is in GUI.

In "API-kaai" is in soarte fan in geheime tekenrige / bestân dy't jo brûke om te autentisearjen foar tsjinsten. Pas op dat it 2-faktor-autentikaasje omgiet en sa fierder as jo dermei ferifiearje. Soargje derfoar dat jo se feilich hâlde en earne dat op oare manieren bûten berik is.

Earst fan alles, wat is dit ark? Hoe behannelet it operaasjes dy't wy soene dwaan fia Git CLI?

"gh" kin beskôge wurde as in iepen boarne (Boarnekoade) wrapper mei Git CLI sels en GitHub API's om dingen dien te krijen. Yn feite kinne jo sels parameters trochjaan oan de Git-kommando's dy't it brûkt! Dêr kom ik letter op yn.

Ynstallaasje en opset

Hâld der rekken mei dat ik sil gean troch de ynstallaasje mei help Termux. Mar de proseduere moat sawat itselde wêze as jo kinne hawwe op in Debian-basearre distro - Ubuntu hat it bygelyks op har offisjele repos. Foar Windows, goed, jo moatte of CygWin of WSL, tink ik. ¯\_(ツ)_/¯

# Litte wy it ark earst ynstallearje. Git ek ynstallearje om't it de backend # is foar gh. $ pkg ynstallearje git gh -y # Dan moatte wy foar alles ferifiearje. Dit sil in # nije API-kaai opslaan yn 'e databank fan it ark, sadat jo # net opnij hoege te ferifiearjen. As jo ​​GITHUB_TOKEN al ynsteld hawwe, sil dit net wurkje, dus ûntsette # it earst. :) $ gh auth login

No, foardat wy hjir trochgean, moat ik ferskate dingen oanjaan.

  • Oan de iene kant, kies net "GitHub Enterprise Server" as jo gjin soarte fan sels-hoste GitHub hawwe.
  • Twad, brûk SSH ynstee fan HTTPS as jo jo iepenbiere kaai hawwe tafoege oan jo GitHub-akkount. As jo ​​​​de API-kaai ferlieze, sille jo jo SSH-kaai op syn minst net ferlieze, sadat it ek in goede fallback-metoade kin wêze.
  • Tredde, kies ynlogge mei browser allinich as jo gjin API-kaai by de hân hawwe! Echt, it soe gjin sin wêze om in oare kaai te hawwen wylst jo al ien hawwe.

Sadree't jo klear binne mei it ynstellen fan dingen, litte wy Git CLI der oer fertelle.

$ gh auth setup-git

Dit sil de nedige Git CLI-konfiguraasjes meitsje foar it gefal dat jo refleksen binnenkomme en jo Git brûke ynstee fan GH.

Guon basis kommando's

No't jo GH hawwe ynsteld, lit my jo ferskate basiskommando's leare op in ferhaalbasis.

Litte wy earst sizze dat jo in pull-fersyk wolle oanmeitsje oan myn repo foar lokale manifesten. Jo wolle it earst forke.

$ gh repo foarke windowz414/platform_manifest! windowz414/platform_manifest bestiet al? Wolle jo de foarke klonje? Ja Klonen yn 'platform_manifest'... remote: Objekten ophelje: 136, dien. ôfstân: Counting foarwerpen: 100% (136/136), dien. ôfstân: Compressing foarwerpen: 100% (81/81), dien. ôfstân: Totaal 136 (delta 46), opnij brûkt 89 (delta 12), pack-werbrûkt 0 Untfangende objekten: 100% (136/136), 30.70 KiB | 166.00 KiB/s, klear. Deltas oplosse: 100% (46/46), dien. Upstream bywurkje Fan github.com:windowz414/platform_manifest * [nije branch] amyrom/rosie -> streamop/amyrom/rosie * [nije branch] aosp-eleven -> streamop/aosp-eleven * [nije branch] aosp-ten -> streamop/aosp-ten * [nije branch] arrow-11.0 -> streamop/arrow-11.0 * [nije branch] cm-14.1 -> streamop/cm-14.1 * [nije branch] dot11 -> streamop/dot11 * [nije branch] ] e/os/v1-nougat -> streamop/e/os/v1-nougat * [nije branch] fluid-11 -> streamop/fluid-11 * [nije branch] fox_7.1 -> streamop/fox_7.1 * [nije branch] hentai-rika -> streamop/hentai-rika * [nije branch] ion-pie -> streamop/ion-pie * [nije branch] lineage-15.1 -> streamop/lineage-15.1 * [nije branch] lineage -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 - > streamop/lineage-19.0 * [nije branch] main -> streamop / main * [nije branch] mkn-mr1 -> streamop/mkn-mr1 * [nije branch] revengeos-r11.0 -> streamop/revengeos-r11.0. 1 * [new branch] stellar-S1 -> upstream/stellar-S11 * [new branch] teos-n -> upstream/teos-n * [new branch] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Cloned fork

Litte wy dan sizze dat jo in aparte organisaasje hawwe foar jo eksperiminten neamd "wz414-labs", dat jo jo persoanlike profyl noch net hawwe forkeard en dêr wolle klone, en iepenje dan it pull-fersyk dêr troch. Jo wolle ek de "cm-14.1" tûke klonearje, sadat jo der net wer git-checkout oan hoege te dwaan.

$ gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Fork makke wz414-labs/platform_manifest? Wolle jo de foarke klonje? Ja Klonen yn 'platform_manifest'... remote: Objekten ophelje: 136, dien. ôfstân: Counting foarwerpen: 100% (136/136), dien. ôfstân: Compressing foarwerpen: 100% (81/81), dien. ôfstân: Totaal 136 (delta 46), opnij brûkt 89 (delta 12), pack-werbrûkt 0 Untfangende objekten: 100% (136/136), 30.70 KiB | 120.00 KiB/s, klear. Deltas oplosse: 100% (46/46), dien. Upstream bywurkje Fan github.com:windowz414/platform_manifest * [nije branch] amyrom/rosie -> streamop/amyrom/rosie * [nije branch] aosp-eleven -> streamop/aosp-eleven * [nije branch] aosp-ten -> streamop/aosp-ten * [nije branch] arrow-11.0 -> streamop/arrow-11.0 * [nije branch] cm-14.1 -> streamop/cm-14.1 * [nije branch] dot11 -> streamop/dot11 * [nije branch] ] e/os/v1-nougat -> streamop/e/os/v1-nougat * [nije branch] fluid-11 -> streamop/fluid-11 * [nije branch] fox_7.1 -> streamop/fox_7.1 * [nije branch] hentai-rika -> streamop/hentai-rika * [nije branch] ion-pie -> streamop/ion-pie * [nije branch] lineage-15.1 -> streamop/lineage-15.1 * [nije branch] lineage -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 - > streamop / lineage-19.0 * [nije branch] main -> streamop / main * [nije branch] mkn-mr1 -> streamop / mkn-mr1 * [nije branch] revengeos-r11.0 -> streamop / revengeos-r11.0. 1 * [new branch] stellar-S1 -> upstream/stellar-S11 * [new branch] teos-n -> upstream/teos-n * [new branch] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Cloned fork

Jo sjogge dat ik "-b cm-14.1" net haw brûkt en ynstee it lange argumint dien. Fanôf de datum fan dit artikel, 16 febrewaris 2022, hat GH in brek dat it koarte arguminten net goed trochjaan oan Git CLI en dus moat it ynstee as lange arguminten dien wurde.

Sadree't dat is dien, jo hawwe geregeldwei ynfierd de map, hawwe jo wizigings dien, ynsette dan triuwe it, en binne ree om te dwaan pull fersyk. Hjirfoar is alles wat jo nedich binne in ienfâldich

$ gh pr create --branch="cm-14.1" Oanmeitsjen fan pull-fersyk foar wz414-labs:cm-14.1 yn cm-14.1 yn windowz414/platform_manifest? Titel teos: Feroarje nei Git-Polycule? Lichem ? Wat komt hjirnei? Yntsjinje https://github.com/windowz414/platform_manifest/pull/1

As jo ​​​​"–branch=cm-14.1" net tafoegje, soene jo PR oanmeitsje nei "haad" branch, wat fansels problemen sil feroarsaakje as it net goed wurdt behannele.

En no moat ik dizze PR fusearje, toch? Dat ik klonje earst de repo, kontrolearje nei de tawiisde tûke en list earst PR's.

# Klonen earst. $ git clone https://github.com/windowz414/platform_manifest Klonen yn 'platform_manifest'... op ôfstân: Objekten opnimme: 136, dien. ôfstân: Counting foarwerpen: 100% (136/136), dien. ôfstân: Compressing foarwerpen: 100% (81/81), dien. ôfstân: Totaal 136 (delta 46), opnij brûkt 89 (delta 12), pack-werbrûkt 0 Untfangende objekten: 100% (136/136), 30.70 KiB | 137.00 KiB/s, klear. Deltas oplosse: 100% (46/46), dien. # Dan útchecken nei de filiaal. $ git checkout cm-14.1 branch 'cm-14.1' ynsteld om 'origin/cm-14.1' te folgjen. Oerskeakele nei in nije branch 'cm-14.1' # En no listje PR's. $ gh pr list Toant 1 fan 1 iepen pull-fersyk yn windowz414/platform_manifest #1 teos: Feroarje nei Git-Polycule wz414-labs:cm-14.1

No't wy sjogge dat d'r in PR is om ôfstân te feroarjen nei "Git-Polycule", litte wy sjen wat der mei feroare is.

$ gh pr diff 1 diff --git a/teos.xml b/teos.xml index b145fc0..3aadeb6 100644 --- a/teos.xml +++ b/teos.xml @@ -2,7 +2,7, 414 @@ 

Liket belofte! Tiid om te fusearjen!

$gh pr gearfoegje 1? Hokker gearfoegingsmetoade wolle jo brûke? Rebasearje en fusearje? Wat komt hjirnei? Yntsjinje ✓ Rebasearre en gearfoege pull-fersyk #1 (teos: Feroarje nei Git-Polycule)

No't ik it gearfoege, kinne jo jo foarke wiskje.

$ gh repo wiskje --befêstigje wz414-labs/platform_manifest ✓ Wiske repository wz414-labs/platform_manifest

Jo sjogge dat de repo direkt wiske hat sûnder befêstigingsfersyk, om't ik dêr de "–befêstigje" parameter trochjûn. As jo ​​​​it net trochjaan, soene jo dit krije:

$ gh repo wiskje windowsz414/systemd? Typ windowz414/systemd om wiskjen te befêstigjen:

En jo soene de folsleine repo-namme moatte ynfiere. Tiidfergriemerij…

Gearfetting

Simply set, `gh` is in frij ferienfâldige Git CLI / Curl wrapper dy't ienfâldige Git-operaasjes en GitHub API-dingen ferieniget ûnder itselde dak. Hoe brûke jo it? Liket it foar jo tasizzend lykas it foar my docht? Sjoch der nei út om wat fan dy te hearren!

Related Articles