Ang GitHub sayon ​​​​nga gamiton nga command line tool: "gh"!

Kung gigamit nimo ang GitHub ug gipalabi ang command line sama nako aron mahuman ang tanan nga wala’y bisan unsang komplikasyon sa GUI, tingali namatikdan nimo kung giunsa ang GitHub nagsugod sa paggamit sa ilang dili bag-o nga himan nga gitawag nga "gh". Nakahukom ko nga sulayan kini, tungod kay kini nagsaad sa tanan. Ug ako personal nga ganahan kaayo niini - Daghan kaayo nga gusto nako nga maghimo usa ka artikulo bahin niini!

Sa wala pa kita magsugod bisan pa, kinahanglan nako ipasabut ang daghang mga termino nga akong gamiton sa kini nga artikulo.

Ang "GH" nagpasabot sa "GitHub”. Dinhi usab naggikan ang ngalan sa himan, busa dili kini malibog sa Git mismo. Aron ipasabut kung unsa ang gibuhat niini sa kinatibuk-an, mahimo ka maghimo, mag-fork, magtangtang, mag-browse sa mga repo; paghimo og mga hangyo sa pagbitad; ug daghan pa. Kung dili nimo makit-an ang usa ka bahin apan dili usab gusto nga mobiya sa terminal, naghatag usab kini usa ka browser nga nakabase sa teksto aron ma-browse nimo ang mga panid sa GitHub.

Ang "CLI" nagpasabut sa "Cmando Line Interface”. Kana nga Terminal (o sa Windows, Command Prompt) usa niini. Kung adunay usa ka "CLI" nga gidugang sunod sa usa ka ngalan sa app ("Git CLI" alang sa kini nga artikulo), kini nagpasabut nga ang app modagan sa terminal lamang. Ug ang "Git CLI" sa kini nga konteksto mao, maayo, ang Git nga nahibal-an namon. Sama sa sugo nga atong gihimong commit o rebases.

Ang GUI nagpasabot sa "Grapical Umahimo Interface” ug kini ang interface nga atong “na-navigate” sa. Mas maayo nga giingon, ang usa ka palibot sa desktop sa kinatibuk-an usa ka GUI.

Ang "API key" usa ka matang sa sekreto nga string/file nga imong gigamit sa pag-authenticate sa mga serbisyo. Pagbantay nga kini molapas sa 2 ka hinungdan nga pag-authenticate ug uban pa kung imong gipamatud-an kini. Busa siguruha nga tipigan sila nga luwas ug sa usa ka lugar nga dili maabot sa ubang paagi.

Una sa tanan, unsa kini nga himan? Giunsa kini pagdumala sa mga operasyon nga among buhaton pinaagi sa Git CLI?

Ang "gh" mahimong isipon nga usa ka bukas nga tinubdan (tinubdan Code) wrapper nga naggamit sa Git CLI mismo ug GitHub API aron mahuman ang mga butang. Sa tinuud, mahimo nimong ipasa ang mga parameter sa Git nga mga mando nga gigamit niini! Susihon ko kana sa ulahi.

Pag-instalar ug pag-set up

Hinumdomi nga moagi ako sa pag-install gamit Termux. Apan ang pamaagi kinahanglan nga parehas sa mahimo nimo sa usa ka distro nga nakabase sa Debian - naa kini sa Ubuntu sa ilang opisyal nga repos pananglitan. Alang sa Windows, maayo, kinahanglan nimo ang CygWin o WSL sa akong hunahuna. ¯\_(ツ)_/¯

# Atong i-install una ang himan. Pag-instalar usab sa Git tungod kay kini ang backend # alang sa gh. $ pkg install git gh -y # Unya sa wala pa ang tanan, kinahanglan naton nga pamatud-an. Makatipig kini og # bag-ong API key sa database sa himan aron dili na nimo kinahanglan nga i-authenticate ang # pag-usab. Kung nabutang na nimo ang GITHUB_TOKEN, dili kini molihok busa i-unset # kini una. :) $ gh auth login

Karon, sa dili pa kita magpadayon dinhi, kinahanglan kong ipunting ang daghang mga butang.

  • Una, ayaw pilia ang "GitHub Enterprise Server" kung wala ka usa ka klase nga gi-host sa kaugalingon nga GitHub.
  • Ikaduha, gamita ang SSH imbes nga HTTPS kung gidugang nimo ang imong public key sa imong GitHub account. Kung mawad-an ka sa yawe sa API, labing menos dili nimo mawala ang imong SSH nga yawe aron mahimo usab kini usa ka maayo nga pamaagi sa pag-fallback.
  • Ikatulo, pilia ang pag-log in gamit ang browser kung wala kay API key sa kamot! Sa tinuud, dili makatarunganon nga adunay lain nga yawe samtang naa ka na.

Kung nahuman na nimo ang pag-set up sa mga butang, sultihan ta ang Git CLI bahin niini.

$ gh auth setup-git

Kini maghimo sa gikinahanglan nga Git CLI configurations kung ang imong reflexes musulod ug gamiton nimo ang Git imbes nga GH.

Pipila ka sukaranang mga sugo

Karon nga na-set up na nimo ang GH, tuguti ko nga tudloan ka sa daghang sukaranang mga sugo sa usa ka basehan sa istorya.

Una sa tanan, ingnon ta nga gusto nimo maghimo usa ka hangyo sa pagbitad sa akong lokal nga repo nga manifest. Gusto nimo kini nga tinidor una.

$ gh repo fork windowz414/platform_manifest ! windowz414/platform_manifest anaa na? Gusto ba nimong i-clone ang tinidor? Oo Pag-clone sa 'platform_manifest'... hilit: Pag-ihap sa mga butang: 136, nahuman na. hilit: Pag-ihap sa mga butang: 100% (136/136), nahuman. hilit: Pag-compress sa mga butang: 100% (81/81), nahuman. hilit: Kinatibuk-ang 136 (delta 46), gigamit pag-usab 89 (delta 12), pack-reused 0 Mga butang nga nadawat: 100% (136/136), 30.70 KiB | 166.00 KiB/s, nahuman na. Pagsulbad sa mga delta: 100% (46/46), nahuman na. Pag-update sa upstream Gikan sa github.com:windowz414/platform_manifest * [bag-ong branch] amyrom/rosie -> upstream/amyrom/rosie * [bag-ong branch] aosp-eleven -> upstream/aosp-eleven * [bag-ong branch] aosp-ten -> upstream/aosp-ten * [bag-ong sanga] arrow-11.0 -> upstream/arrow-11.0 * [bag-ong sanga] cm-14.1 -> upstream/cm-14.1 * [bag-ong sanga] dot11 -> upstream/dot11 * [bag-ong sanga ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [bag-ong sanga] fluid-11 -> upstream/fluid-11 * [bag-ong sanga] fox_7.1 -> upstream/fox_7.1 * [bag-ong branch] hentai-rika -> upstream/hentai-rika * [bag-ong branch] ion-pie -> upstream/ion-pie * [bag-ong branch] lineage-15.1 -> upstream/lineage-15.1 * [bag-ong branch] lineage -17.1 -> upstream/lineage-17.1 * [bag-ong branch] lineage-18.1 -> upstream/lineage-18.1 * [bag-ong branch] lineage-18.1_teos -> upstream/lineage-18.1_teos * [bag-ong branch] lineage-19.0 - > upstream/lineage-19.0 * [bag-ong branch] main -> upstream/main * [bag-ong branch] mkn-mr1 -> upstream/mkn-mr1 * [bag-ong branch] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [bag-ong branch] stellar-S1 -> upstream/stellar-S11 * [bag-ong branch] teos-n -> upstream/teos-n * [bag-ong branch] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Cloned fork

Unya ingnon ta nga ikaw adunay usa ka bulag nga organisasyon alang sa imong mga eksperimento nga gitawag nga "wz414-labs", nga wala nimo gi-fork ang imong personal nga profile ug gusto nga mag-clone didto unya ablihan ang hangyo sa pagbitad didto. Gusto usab nimo nga i-clone ang "cm-14.1" nga sanga aron dili nimo kinahanglan nga buhaton pag-usab ang git-checkout niini.

$ gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Gibuhat nga fork wz414-labs/platform_manifest ? Gusto ba nimong i-clone ang tinidor? Oo Pag-clone sa 'platform_manifest'... hilit: Pag-ihap sa mga butang: 136, nahuman na. hilit: Pag-ihap sa mga butang: 100% (136/136), nahuman. hilit: Pag-compress sa mga butang: 100% (81/81), nahuman. hilit: Kinatibuk-ang 136 (delta 46), gigamit pag-usab 89 (delta 12), pack-reused 0 Mga butang nga nadawat: 100% (136/136), 30.70 KiB | 120.00 KiB/s, nahuman na. Pagsulbad sa mga delta: 100% (46/46), nahuman na. Pag-update sa upstream Gikan sa github.com:windowz414/platform_manifest * [bag-ong branch] amyrom/rosie -> upstream/amyrom/rosie * [bag-ong branch] aosp-eleven -> upstream/aosp-eleven * [bag-ong branch] aosp-ten -> upstream/aosp-ten * [bag-ong sanga] arrow-11.0 -> upstream/arrow-11.0 * [bag-ong sanga] cm-14.1 -> upstream/cm-14.1 * [bag-ong sanga] dot11 -> upstream/dot11 * [bag-ong sanga ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [bag-ong sanga] fluid-11 -> upstream/fluid-11 * [bag-ong sanga] fox_7.1 -> upstream/fox_7.1 * [bag-ong branch] hentai-rika -> upstream/hentai-rika * [bag-ong branch] ion-pie -> upstream/ion-pie * [bag-ong branch] lineage-15.1 -> upstream/lineage-15.1 * [bag-ong branch] lineage -17.1 -> upstream/lineage-17.1 * [bag-ong branch] lineage-18.1 -> upstream/lineage-18.1 * [bag-ong branch] lineage-18.1_teos -> upstream/lineage-18.1_teos * [bag-ong branch] lineage-19.0 - > upstream/lineage-19.0 * [bag-ong branch] main -> upstream/main * [bag-ong branch] mkn-mr1 -> upstream/mkn-mr1 * [bag-ong branch] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [bag-ong branch] stellar-S1 -> upstream/stellar-S11 * [bag-ong branch] teos-n -> upstream/teos-n * [bag-ong branch] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Cloned fork

Nakita nimo nga wala nako gigamit ang "-b cm-14.1" ug gihimo ang taas nga argumento. Ingon sa petsa sa kini nga artikulo, Pebrero 16, 2022, ang GH adunay bug nga dili kini makapasa sa mubu nga mga argumento sa Git CLI sa husto ug busa kinahanglan kini buhaton ingon taas nga mga argumento.

Kung nahuman na kana, kanunay nimong gisulod ang folder, gibuhat ang imong mga pagbag-o, gipasalig dayon giduso kini, ug andam na nga buhaton ang hangyo sa pagbitad. Alang niini, yano ra ang imong kinahanglan

$ gh pr paghimo --branch ="cm-14.1" Paghimo hangyo sa pagbitad alang sa wz414-labs:cm-14.1 ngadto sa cm-14.1 sa windowz414/platform_manifest ? Title teos: Usba sa Git-Polycule ? Lawas ? Unsay sunod? Isumite ang https://github.com/windowz414/platform_manifest/pull/1

Kung dili nimo idugang ang "–branch=cm-14.1", maghimo ka ug PR padulong sa "panguna" nga sanga, nga siyempre magpahinabog mga isyu kung dili kini madumala sa husto.

Ug karon, kinahanglan nako nga i-merge kini nga PR, di ba? Mao nga gi-clone nako una ang repo, nag-checkout sa na-assign nga branch, ug gilista una ang mga PR.

# Pag-clone una. $ git clone https://github.com/windowz414/platform_manifest Pag-clone sa 'platform_manifest'... hilit: Pag-ihap sa mga butang: 136, nahuman na. hilit: Pag-ihap sa mga butang: 100% (136/136), nahuman. hilit: Pag-compress sa mga butang: 100% (81/81), nahuman. hilit: Kinatibuk-ang 136 (delta 46), gigamit pag-usab 89 (delta 12), pack-reused 0 Mga butang nga nadawat: 100% (136/136), 30.70 KiB | 137.00 KiB/s, nahuman na. Pagsulbad sa mga delta: 100% (46/46), nahuman na. # Unya pagsusi sa sanga. $ git checkout cm-14.1 branch 'cm-14.1' gipahimutang aron masubay ang 'origin/cm-14.1'. Gibalhin sa bag-ong sanga 'cm-14.1' # Ug karon naglista sa mga PR. $ gh pr list Nagpakita sa 1 sa 1 nga bukas nga hangyo sa pagbitad sa windowz414/platform_manifest #1 teos: Pag-ilis sa Git-Polycule wz414-labs:cm-14.1

Karon nga nakita namon nga adunay usa ka PR nga usbon ang layo sa "Git-Polycule", tan-awon naton kung unsa ang nabag-o niini.

$ 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 @@ 

Daw saad! Panahon sa paghiusa!

$ gh pr merge 1 ? Unsang paagi sa paghiusa ang gusto nimong gamiton? I-rebase ug i-merge? Unsay sunod? Isumite ang ✓ Gibase ug gihiusa nga hangyo sa pagbitad #1 (teos: Pagbalhin sa Git-Polycule)

Karon nga akong gihiusa kini, mahimo nimong papason ang imong tinidor.

$ gh repo delete --confirm wz414-labs/platform_manifest ✓ Gitangtang nga repository wz414-labs/platform_manifest

Nakita nimo nga diretso nga gitangtang ang repo nga wala’y hangyo sa pagkumpirma tungod kay gipasa nako ang parameter nga "–confirm" didto. Kung dili nimo kini ipasa, makuha nimo kini:

$ gh repo delete windowz414/systemd ? I-type ang windowz414/systemd aron kumpirmahon ang pagtangtang:

Ug kinahanglan nimo nga i-type ang tibuuk nga ngalan sa repo. Pag-usik sa oras…

summary

Sa yanong pagkasulti, ang `gh` usa ka medyo gipasimple nga Git CLI/Curl wrapper nga naghiusa sa yano nga mga operasyon sa Git ug mga butang sa GitHub API sa ilawom sa parehas nga atop. Giunsa nimo kini paggamit? Nagsaad ba kini kanimo sama sa gibuhat niini kanako? Naghinamhinam nga makadungog gikan kanimo!

Nalangkit nga mga Artikulo