L-għodda tal-linja tal-kmand faċli biex tużah ta’ GitHub: “gh”!

Jekk kont qed tuża GitHub u tippreferi l-linja tal-kmand bħali biex tagħmel kollox mingħajr ebda kumplikazzjonijiet fuq il-GUI, forsi ndunajt kif GitHub beda juża l-għodda mhux daqshekk ġdida tagħhom imsejħa "gh". Iddeċidejt li nagħtiha ċans, għax wara kollox deher promettenti. U personalment għoġobni ħafna - Tant li ridt nagħmel artiklu dwarha!

Iżda qabel ma nibdew, għandi bżonn nispjega diversi termini li ser inkun qed nuża f'dan l-artikolu.

“GH” tfisser “GitHub”. Dan huwa minn fejn joriġina l-isem tal-għodda wkoll, għalhekk ma jistax jiġi konfuż ma 'Git innifsu. Biex tispjega x'tagħmel b'mod ġenerali, tista 'toħloq, furketta, tħassar, tfittex repos; toħloq talbiet għall-ġibda; u ħafna aktar. Fil-każ li ma tistax issib karatteristika iżda wkoll ma tridx titlaq mit-terminal, tipprovdi wkoll browser ibbażat fuq test biex inti tfittex paġni f'GitHub.

“CLI” tfisser “Cordni LIne Ininterface”. Dak it-Terminal (jew fil-Windows, Command Prompt) huwa wieħed minnhom. Jekk hemm “CLI” mehmuża ħdejn isem ta’ app (“Git CLI” għal dan l-artikolu), dan ifisser li l-app tgħaddi mit-terminal biss. U "Git CLI" f'dan il-kuntest huwa, ukoll, il-Git li nafu. Bħall-kmand li nagħmlu kommits jew rebases bih.

GUI tfisser "Grapika Utara Interface" u huwa l-interface li aħna "navigaw" fuq. Aħjar, ambjent tad-desktop b'mod ġenerali huwa GUI.

"Ċavetta API" hija xi tip ta' string/fajl sigriet li tuża biex tawtentika għas-servizzi. Oqgħod attent li tevita l-awtentikazzjoni ta 'fattur 2 u l-bqija meta tivverifika magħha. Allura kun żgur li żżommhom siguri u x'imkien li ma jintlaħaqx b'mezzi oħra.

L-ewwelnett, x'inhi din l-għodda? Kif timmaniġġja l-operazzjonijiet li nagħmlu permezz ta 'Git CLI?

“gh” jista’ jitqies bħala sors miftuħ (sors Kodiċi) wrapper li juża Git CLI innifsu u GitHub APIs biex isiru l-affarijiet. Fil-fatt, tista 'anki tgħaddi parametri lill-kmandi Git li juża! Nidħol f'dawk aktar tard.

Installazzjoni u twaqqif

Żomm f'moħħok li jien ser ngħaddi mill-installazzjoni bl-użu Termux. Iżda l-proċedura għandha tkun pjuttost l-istess bħalma jista 'jkollok fuq distro bbażata fuq Debian - Ubuntu għandha fuq ir-repos uffiċjali tagħhom pereżempju. Għall-Windows, ukoll, għandek bżonn jew CygWin jew WSL I suppose. ¯\_(ツ)_/¯

# Ejja ninstallaw l-għodda l-ewwel. Jinstalla wkoll Git peress li huwa l-backend # għal gh. $ pkg install git gh -y # Imbagħad qabel kollox, irridu nawtentikaw. Dan se jiffranka # ċavetta API ġdida fuq id-database tal-għodda sabiex ma jkollokx bżonn tawtentika # mill-ġdid. Jekk diġà ssettjajt GITHUB_TOKEN, dan mhux se jaħdem u għalhekk waqqaf # l-ewwel. :) $ gh awth login

Issa, qabel ma nkomplu hawn, irrid nirrimarka diversi affarijiet.

  • L-ewwelnett, tagħżelx “GitHub Enterprise Server” jekk m'għandekx xi tip ta' GitHub self-hosted.
  • It-tieni nett, uża SSH minflok HTTPS jekk ikollok iċ-ċavetta pubblika tiegħek miżjuda fuq il-kont GitHub tiegħek. Fil-każ li titlef iċ-ċavetta API, int tal-inqas mhux se titlef iċ-ċavetta SSH tiegħek u għalhekk tista 'tkun metodu ta' riżerva tajjeb ukoll.
  • It-tielet, agħżel li tidħol bil-browser biss jekk ma jkollokx ċavetta API fuq naħa! Verament, ma jagħmilx sens li jkollok ċavetta oħra waqt li diġà għandek waħda.

Ladarba tkun lest it-twaqqif tal-affarijiet, ejja ngħidu lil Git CLI dwarha.

$ gh awth setup-git

Dan jagħmel il-konfigurazzjonijiet meħtieġa tal-Git CLI biss fil-każ li r-riflessi tiegħek jidħlu u jġiegħlek tuża Git minflok GH.

Xi kmandi bażiċi

Issa li waqqaft GH, ħalluni ngħallem diversi kmandi bażiċi fuq bażi ta 'storja.

L-ewwelnett, ejja ngħidu li trid toħloq talba ta 'ġibda għar-repożitorju ta' manifesti lokali tiegħi. L-ewwel trid taqbadha.

$ gh repo fork windowz414/platform_manifest ! windowz414/platform_manifest diġà jeżisti ? Tixtieq tikklona l-furketta? Iva Klonazzjoni fi 'platform_manifest'... remot: Enumerazzjoni ta' oġġetti: 136, lest. remot: Għadd ta' oġġetti: 100% (136/136), lest. remot: Kompressjoni oġġetti: 100% (81/81), lest. remot: Total 136 (delta 46), użat mill-ġdid 89 (delta 12), pakkett użat mill-ġdid 0 Oġġetti li jirċievu: 100% (136/136), 30.70 KiB | 166.00 KiB/s, magħmul. Riżoluzzjoni deltas: 100% (46/46), lest. Aġġornament upstream Minn github.com:windowz414/platform_manifest * [fergħa ġdida] amyrom/rosie -> upstream/amyrom/rosie * [fergħa ġdida] aosp-eleven -> upstream/aosp-eleven * [fergħa ġdida] aosp-ten -> upstream/aosp-ten * [fergħa ġdida] vleġġa-11.0 -> upstream/vleġġa-11.0 * [fergħa ġdida] cm-14.1 -> upstream/cm-14.1 * [fergħa ġdida] dot11 -> upstream/dot11 * [fergħa ġdida ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [fergħa ġdida] fluid-11 -> upstream/fluid-11 * [fergħa ġdida] fox_7.1 -> upstream/fox_7.1 * [fergħa ġdida] hentai-rika -> upstream/hentai-rika * [fergħa ġdida] ion-pie -> upstream/ion-pie * [fergħa ġdida] nisel-15.1 -> upstream/nisel-15.1 * [fergħa ġdida] nisel -17.1 -> upstream/lineage-17.1 * [fergħa ġdida] lineage-18.1 -> upstream/lineage-18.1 * [fergħa ġdida] lineage-18.1_teos -> upstream/lineage-18.1_teos * [fergħa ġdida] lineage-19.0 - > upstream/lineage-19.0 * [fergħa ġdida] prinċipali -> upstream/main * [fergħa ġdida] mkn-mr1 -> upstream/mkn-mr1 * [fergħa ġdida] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [fergħa ġdida] stellar-S1 -> upstream/stellar-S11 * [fergħa ġdida] teos-n -> upstream/teos-n * [fergħa ġdida] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Furketta kklonata

Imbagħad ejja ngħidu li għandek organizzazzjoni separata għall-esperimenti tiegħek imsejħa "wz414-labs", li għadek ma ssux fuq il-profil personali tiegħek u trid tikklona hemmhekk imbagħad tiftaħ it-talba tal-ġibda minn hemm minflok. Trid ukoll tikklona l-fergħa "cm-14.1" sabiex ma jkollokx bżonn terġa' tagħmel git-checkout lilha.

$ gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Furketta maħluqa wz414-labs/platform_manifest ? Tixtieq tikklona l-furketta? Iva Klonazzjoni fi 'platform_manifest'... remot: Enumerazzjoni ta' oġġetti: 136, lest. remot: Għadd ta' oġġetti: 100% (136/136), lest. remot: Kompressjoni oġġetti: 100% (81/81), lest. remot: Total 136 (delta 46), użat mill-ġdid 89 (delta 12), pakkett użat mill-ġdid 0 Oġġetti li jirċievu: 100% (136/136), 30.70 KiB | 120.00 KiB/s, lest. Riżoluzzjoni deltas: 100% (46/46), lest. Aġġornament upstream Minn github.com:windowz414/platform_manifest * [fergħa ġdida] amyrom/rosie -> upstream/amyrom/rosie * [fergħa ġdida] aosp-eleven -> upstream/aosp-eleven * [fergħa ġdida] aosp-ten -> upstream/aosp-ten * [fergħa ġdida] vleġġa-11.0 -> upstream/vleġġa-11.0 * [fergħa ġdida] cm-14.1 -> upstream/cm-14.1 * [fergħa ġdida] dot11 -> upstream/dot11 * [fergħa ġdida ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [fergħa ġdida] fluid-11 -> upstream/fluid-11 * [fergħa ġdida] fox_7.1 -> upstream/fox_7.1 * [fergħa ġdida] hentai-rika -> upstream/hentai-rika * [fergħa ġdida] ion-pie -> upstream/ion-pie * [fergħa ġdida] nisel-15.1 -> upstream/nisel-15.1 * [fergħa ġdida] nisel -17.1 -> upstream/lineage-17.1 * [fergħa ġdida] lineage-18.1 -> upstream/lineage-18.1 * [fergħa ġdida] lineage-18.1_teos -> upstream/lineage-18.1_teos * [fergħa ġdida] lineage-19.0 - > upstream/lineage-19.0 * [fergħa ġdida] prinċipali -> upstream/main * [fergħa ġdida] mkn-mr1 -> upstream/mkn-mr1 * [fergħa ġdida] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [fergħa ġdida] stellar-S1 -> upstream/stellar-S11 * [fergħa ġdida] teos-n -> upstream/teos-n * [fergħa ġdida] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Furketta kklonata

Tara ma użajtx “-b cm-14.1” u għamilt l-argument twil minflok. Mid-data ta 'dan l-artikolu, 16 ta' Frar, 2022, GH għandu bug li ma jgħaddix argumenti qosra lil Git CLI b'mod korrett u għalhekk jeħtieġ li jsir bħala argumenti twal minflok.

Ladarba dan isir, int regolarment daħlet fil-folder, għamilt il-bidliet tiegħek, ikkommejt imbagħad imbuttat, u lest li tagħmel it-talba tal-ġibda. Għal dan, kull ma għandek bżonn huwa sempliċi

$ gh pr create --branch="cm-14.1" Ħolqien ta' talba ta' ġibda għal wz414-labs:cm-14.1 fis-cm-14.1 fi windowz414/platform_manifest ? Titlu teos: Bidla għal Git-Polycule ? Korp ? X'inhu jmiss? Ibgħat https://github.com/windowz414/platform_manifest/pull/1

Jekk ma tehmeżx “–branch=cm-14.1”, tkun qed toħloq PR lejn fergħa “prinċipali”, li naturalment tikkawża problemi meta ma tiġix immaniġġjata sew.

U issa, għandi bżonn ngħaqqad dan il-PR, hux? Allura l-ewwel nikklona r-repo, niċċekkja lill-fergħa assenjata, u nniżżel il-PRs l-ewwel.

# Klonazzjoni l-ewwel. $ git clone https://github.com/windowz414/platform_manifest Klonazzjoni fi 'platform_manifest'... remot: Enumerazzjoni ta' oġġetti: 136, lest. remot: Għadd ta' oġġetti: 100% (136/136), lest. remot: Kompressjoni oġġetti: 100% (81/81), lest. remot: Total 136 (delta 46), użat mill-ġdid 89 (delta 12), pakkett użat mill-ġdid 0 Oġġetti li jirċievu: 100% (136/136), 30.70 KiB | 137.00 KiB/s, magħmul. Riżoluzzjoni deltas: 100% (46/46), lest. # Imbagħad iċċekkja lejn il-fergħa. $ git checkout ċm-14.1 fergħa 'cm-14.1' stabbilita biex issegwi 'oriġini/cm-14.1'. Qlib għal fergħa ġdida 'cm-14.1' # U issa jelenka l-PRs. Lista ta' $ gh pr Li turi 1 minn 1 talba ta' ġibda miftuħa fit-windowz414/platform_manifest #1 teos: Bidla għal Git-Polycule wz414-labs:cm-14.1

Issa li naraw hemm PR biex tinbidel remot għal "Git-Polycule", ejja naraw x'inbidel magħha.

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

Jidher promettenti! Żmien li tgħaqqad!

$ gh pr jingħaqdu 1 ? Liema metodu ta' amalgamazzjoni tixtieq tuża? Rebase u jingħaqdu? X'inhu jmiss? Ibgħat ✓ Talba tal-ġibda #1 ibbażata mill-ġdid u magħquda (teos: Bidla għal Git-Polycule)

Issa li għaqqadha, tista 'tħassar il-furketta tiegħek.

$ gh repo delete --confirm wz414-labs/platform_manifest ✓ Repożitorju mħassar wz414-labs/platform_manifest

Tara li straight up ħassar ir-repo mingħajr talba ta 'konferma minħabba li għadda l-parametru "-confirm" hemmhekk. Kieku ma tgħaddihx, tirċievi dan:

$ gh repo ħassar windowz414/systemd ? Ittajpja windowz414/systemd biex tikkonferma t-tħassir:

U jkollok bżonn ittajpja l-isem repo kollu. Ħela ta’ ħin…

sommarju

Fi kliem sempliċi, `gh` huwa wrapper Git CLI/Curl pjuttost simplifikat li jgħaqqad operazzjonijiet Git sempliċi u affarijiet GitHub API taħt l-istess saqaf. Kif tutilizzah? Tidher promettenti għalik bħalma tagħmel lili? Ħerqana li nisimgħu mingħandek!

Artikli relatati