Auðvelt að nota skipanalínuverkfæri GitHub: „gh“!

Ef þú hefur notað GitHub og vilt frekar skipanalínuna eins og ég til að fá allt gert án fylgikvilla á GUI, gætirðu hafa tekið eftir því hvernig GitHub byrjaði að nota ekki svo nýja tólið sitt sem kallast „gh“. Ég ákvað að prófa, því þetta leit lofandi út þegar allt kemur til alls. Og mér líkaði það persónulega mikið - svo mikið að mig langaði að gera grein um það!

Áður en við byrjum þarf ég að útskýra nokkur hugtök sem ég mun nota í þessari grein.

„GH“ stendur fyrir „GitHub“. Þetta er þaðan sem nafn tólsins kemur líka frá, svo það er ekki hægt að rugla því saman við Git sjálft. Til að útskýra hvað það gerir almennt, getur þú búið til, gaffla, eytt, flett í endurhverfum; búa til dráttarbeiðnir; og margir fleiri. Ef þú finnur ekki eiginleika en vilt heldur ekki yfirgefa flugstöðina, þá býður hann einnig upp á textabyggðan vafra fyrir þig til að skoða síður í GitHub.

„CLI“ stendur fyrir „Cumboð Line Iviðmót“. Þessi flugstöð (eða í Windows, Command Prompt) er ein af þeim. Ef það er „CLI“ bætt við nafn apps („Git CLI“ fyrir þessa grein), þýðir það að appið keyrir aðeins í gegnum flugstöðina. Og „Git CLI“ í þessu samhengi er, jæja, Git sem við þekkjum. Eins og skipunin sem við gerum commits eða rebases með.

GUI stendur fyrir "Graftæki Usjá Interface“ og það er viðmótið sem við „siglum“ um. Betra sagt, skjáborðsumhverfi er almennt GUI.

„API lykill“ er einhvers konar leynilegur strengur/skrá sem þú notar til að auðkenna fyrir þjónustu. Gættu þess að það framhjá 2 þátta auðkenningu og svo framvegis þegar þú auðkennar með því. Svo vertu viss um að halda þeim öruggum og einhvers staðar sem er utan seilingar með öðrum hætti.

Fyrst af öllu, hvað er þetta tól? Hvernig höndlar það aðgerðir sem við myndum gera í gegnum Git CLI?

"gh" má líta á sem opinn uppspretta (Source Code) umbúðir sem notar Git CLI sjálft og GitHub API til að koma hlutunum í verk. Reyndar geturðu jafnvel sent færibreytur í Git skipanirnar sem það notar! Ég kem inn á þá síðar.

Uppsetning og uppsetning

Hafðu í huga að ég mun fara í gegnum uppsetninguna með því að nota Termux. En málsmeðferðin ætti að vera nokkurn veginn sú sama og þú gætir haft á Debian-undirstaða dreifingu - Ubuntu hefur það til dæmis á opinberu endursölustað sínum. Fyrir Windows, jæja, þú þarft annað hvort CygWin eða WSL geri ég ráð fyrir. ¯\_(ツ)_/¯

# Við skulum setja upp tólið fyrst. Set líka upp Git þar sem það er bakendi # fyrir gh. $ pkg setja upp git gh -y # Síðan á undan öllu þurfum við að auðkenna. Þetta mun vista # nýjan API lykil á gagnagrunni tólsins svo þú þarft ekki að auðkenna # aftur. Ef þú hefur nú þegar stillt GITHUB_TOKEN, mun þetta ekki virka svo afstilltu # það fyrst. :) $ gh auth innskráning

Nú, áður en við höldum hér áfram, þarf ég að benda á nokkur atriði.

  • Í fyrsta lagi, ekki velja „GitHub Enterprise Server“ ef þú ert ekki með einhvers konar sjálf-hýst GitHub.
  • Í öðru lagi, notaðu SSH í staðinn fyrir HTTPS ef þú ert með almenningslyklinum þínum bætt við GitHub reikninginn þinn. Ef þú týnir API lyklinum muntu að minnsta kosti ekki missa SSH lykilinn þinn svo það getur líka verið góð varaaðferð.
  • Í þriðja lagi skaltu velja að skrá þig inn með vafra aðeins ef þú ert ekki með API lykil við höndina! Í alvöru, það væri ekki skynsamlegt að hafa annan lykil á meðan þú ert nú þegar með einn.

Þegar þú ert búinn að setja hlutina upp skulum við segja Git CLI frá því.

$ gh auth uppsetning-git

Þetta mun gera nauðsynlegar Git CLI stillingar bara ef viðbrögðin þín streyma inn og láta þig nota Git í stað GH.

Nokkrar grunnskipanir

Nú þegar þú hefur sett upp GH, leyfðu mér að kenna þér nokkrar grunnskipanir í sögugrunni.

Í fyrsta lagi skulum við segja að þú viljir búa til dráttarbeiðni í staðbundin upplýsingaskrárskrá. Þú vilt punga það fyrst.

$ gh repo gaffal windowz414/platform_manifest! windowz414/platform_manifest er þegar til ? Viltu klóna gaffalinn? Já Klónun í 'platform_manifest'... fjarstýring: Upptalning á hlutum: 136, lokið. fjarstýring: Talning á hlutum: 100% (136/136), lokið. fjarstýring: Þjappa hlutum: 100% (81/81), búið. fjarstýring: Samtals 136 (delta 46), endurnýtt 89 (delta 12), pakkning endurnýtt 0 Móttökuhlutir: 100% (136/136), 30.70 KiB | 166.00 KiB/s, búið. Upplausn af þáttum: 100% (46/46), lokið. Uppfærsla andstreymis Frá github.com:windowz414/platform_manifest * [ný útibú] amyrom/rosie -> andstreymis/amyrom/rosie * [ný útibú] aosp-eleven -> andstreymis/aosp-eleven * [ný útibú] aosp-ten -> andstreymis/aosp-ten * [ný grein] ör-11.0 -> andstreymis/ör-11.0 * [ný grein] cm-14.1 -> andstreymis/cm-14.1 * [ný grein] punktur11 -> andstreymis/punktur11 * [ný grein ] e/os/v1-nougat -> andstreymis/e/os/v1-nougat * [ný grein] vökvi-11 -> andstreymis/vökvi-11 * [ný útibú] fox_7.1 -> andstreymis/fox_7.1 * [ný grein] hentai-rika -> andstreymis/hentai-rika * [ný grein] jónabaka -> uppstreymis/jónakaka * [ný grein] ætt-15.1 -> uppstreymis/ætt-15.1 * [ný grein] ætt -17.1 -> andstreymis/ætt-17.1 * [ný grein] ætt-18.1 -> uppstreymi/ætt-18.1 * [ný grein] ætt-18.1_teos -> uppstreymi/ætt-18.1_teos * [ný grein] ætt-19.0 - > upstream/lineage-19.0 * [ný útibú] aðal -> andstreymis/aðal * [ný útibú] mkn-mr1 -> andstreymis/mkn-mr1 * [ný grein] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [ný grein] stjörnu-S1 -> andstreymis/stjörnu-S11 * [ný grein] teos-n -> uppstreymis/teos-n * [ný grein] weebprojekt-11 -> andstreymis/weebprojekt-XNUMX ✓ Klónaður gaffli

Segjum svo að þú sért með sérstakt skipulag fyrir tilraunirnar þínar sem kallast "wz414-labs", að þú hafir ekki pungað inn á persónulega prófílinn þinn ennþá og viljir klóna þar og opna síðan pull request þar í gegn. Þú vilt líka klóna "cm-14.1" útibúið svo þú þarft ekki að gera git-checkout á hana aftur.

$ gh repo gaffal windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Búið til gaffal wz414-labs/platform_manifest ? Viltu klóna gaffalinn? Já Klónun í 'platform_manifest'... fjarstýring: Upptalning á hlutum: 136, lokið. fjarstýring: Talning á hlutum: 100% (136/136), lokið. fjarstýring: Þjappa hlutum: 100% (81/81), búið. fjarstýring: Samtals 136 (delta 46), endurnýtt 89 (delta 12), pakkning endurnýtt 0 Móttökuhlutir: 100% (136/136), 30.70 KiB | 120.00 KiB/s, búið. Upplausn af þáttum: 100% (46/46), lokið. Uppfærsla andstreymis Frá github.com:windowz414/platform_manifest * [ný útibú] amyrom/rosie -> andstreymis/amyrom/rosie * [ný útibú] aosp-eleven -> andstreymis/aosp-eleven * [ný útibú] aosp-ten -> andstreymis/aosp-ten * [ný grein] ör-11.0 -> andstreymis/ör-11.0 * [ný grein] cm-14.1 -> andstreymis/cm-14.1 * [ný grein] punktur11 -> andstreymis/punktur11 * [ný grein ] e/os/v1-nougat -> andstreymis/e/os/v1-nougat * [ný grein] vökvi-11 -> andstreymis/vökvi-11 * [ný útibú] fox_7.1 -> andstreymis/fox_7.1 * [ný grein] hentai-rika -> andstreymis/hentai-rika * [ný grein] jónabaka -> uppstreymis/jónakaka * [ný grein] ætt-15.1 -> uppstreymis/ætt-15.1 * [ný grein] ætt -17.1 -> andstreymis/ætt-17.1 * [ný grein] ætt-18.1 -> uppstreymi/ætt-18.1 * [ný grein] ætt-18.1_teos -> andstreymis/ætt-18.1_teos * [ný grein] ætt-19.0 - > upstream/lineage-19.0 * [ný útibú] aðal -> andstreymis/aðal * [ný útibú] mkn-mr1 -> andstreymis/mkn-mr1 * [ný grein] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [ný grein] stjarna-S1 -> andstreymis/stjörnu-S11 * [ný grein] teos-n -> andstreymis/teos-n * [ný grein] weebprojekt-11 -> andstreymis/weebprojekt-XNUMX ✓ Klónaður gaffli

Þú sérð að ég notaði ekki “-b cm-14.1” og gerði langa rök í staðinn. Frá og með dagsetningu þessarar greinar, 16. febrúar 2022, er GH með villu um að það sendir ekki stutt rök til Git CLI rétt og því þarf að gera það sem langar rök í staðinn.

Þegar því er lokið fórstu reglulega inn í möppuna, gerðir breytingarnar þínar, skuldbindur þig og ýtir á hana og ert tilbúinn til að gera pull request. Fyrir þetta er allt sem þú þarft einfalt

$ gh pr create --branch="cm-14.1" Búa til dráttarbeiðni fyrir wz414-labs:cm-14.1 í cm-14.1 í windowz414/platform_manifest ? Titill teos: Breyta í Git-Polycule? Líkami ? Hvað er næst? Sendu inn https://github.com/windowz414/platform_manifest/pull/1

Ef þú bætir ekki við “–branch=cm-14.1”, þá myndirðu búa til PR í átt að “aðal” útibúi, sem auðvitað mun valda vandræðum þegar það er ekki meðhöndlað rétt.

Og nú þarf ég að sameina þetta PR, ekki satt? Svo ég klóna fyrst endurhverfan, fer í útibúið sem úthlutað er og skrái PR fyrst.

# Klónun fyrst. $ git klón https://github.com/windowz414/platform_manifest Klónun í 'platform_manifest'... fjarstýring: Upptalning á hlutum: 136, lokið. fjarstýring: Talning á hlutum: 100% (136/136), lokið. fjarstýring: Þjappa hlutum: 100% (81/81), búið. fjarstýring: Samtals 136 (delta 46), endurnýtt 89 (delta 12), pakkning endurnýtt 0 Móttökuhlutir: 100% (136/136), 30.70 KiB | 137.00 KiB/s, búið. Upplausn af þáttum: 100% (46/46), lokið. # Svo að tékka út í útibúið. $ git checkout cm-14.1 grein 'cm-14.1' sett upp til að rekja 'origin/cm-14.1'. Skipti yfir í nýtt útibú 'cm-14.1' # Og skráir nú PRs. $ gh pr listi Sýnir 1 af 1 opinni dráttarbeiðni í windowz414/platform_manifest #1 teos: Breyta í Git-Polycule wz414-labs:cm-14.1

Nú þegar við sjáum að það er PR til að breyta fjarstýringunni í "Git-Polycule", skulum við sjá hvað hefur breyst með henni.

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

Virðist lofa góðu! Tími til kominn að sameinast!

$ gh pr sameina 1? Hvaða samrunaaðferð myndir þú vilja nota? Endurbasa og sameina? Hvað er næst? Sendu ✓ Endurbyggð og sameinuð dráttarbeiðni #1 (teos: Breyta í Git-Polycule)

Nú þegar ég sameinaði það geturðu eytt gafflinum þínum.

$ gh endurhverfu eyða --staðfestu wz414-labs/platform_manifest ✓ Eytt geymslu wz414-labs/platform_manifest

Þú sérð að eyddi endurhverfunni beint án staðfestingarbeiðni vegna þess að ég fór framhjá „–confirm“ færibreytunni þar. Ef þú myndir ekki standast það færðu þetta:

$ gh endurhverfu eyða windowsz414/systemd ? Sláðu inn windowz414/systemd til að staðfesta eyðingu:

Og þú þyrftir að slá inn allt repo nafnið. Tímaeyðsla…

Yfirlit

Einfaldlega sagt, `gh` er frekar einfölduð Git CLI/Curl umbúðir sem sameinar einfaldar Git aðgerðir og GitHub API hluti undir sama þaki. Hvernig nýtirðu það? Finnst þér það lofa góðu eins og mér? Hlakka til að heyra frá þér!

tengdar greinar