GitHub's einfach ze benotzen Kommandozeilinstrument: "gh"!

Wann Dir GitHub benotzt hutt an d'Kommandozeil wéi ech léiwer hutt fir alles ouni Komplikatiounen op GUI gemaach ze kréien, hutt Dir vläicht gemierkt wéi GitHub ugefaang hiren net sou neien Tool mam Numm "gh" ze benotzen. Ech hu beschloss et ze probéieren, well et schliisslech villverspriechend ausgesäit. An ech perséinlech gefall et vill - Sou vill, datt ech en Artikel doriwwer ze maachen wollt!

Ier mer awer ufänken, muss ech e puer Begrëffer erklären, déi ech an dësem Artikel benotzen.

"GH" steet fir "GitHub". Dëst ass wou den Numm vum Tool och hierkënnt, sou datt et net mam Git selwer verwiesselt ka ginn. Fir z'erklären wat et am Allgemengen mécht, kënnt Dir erstellen, fork, läschen, duerchsichen Repos; schafen Pull Ufroen; a vill méi. Am Fall wou Dir keng Feature fannt, awer och den Terminal net wëllt verloossen, bitt et och en Text-baséiert Browser fir Iech Säiten am GitHub ze duerchsichen.

"CLI" steet fir "COmmand LIne IInterface". Dëse Terminal (oder a Windows, Command Prompt) ass ee vun hinnen. Wann et e "CLI" nieft engem App Numm bäigefüügt gëtt ("Git CLI" fir dësen Artikel), heescht et datt d'App nëmmen duerch den Terminal leeft. An "Git CLI" an dësem Kontext ass, gutt, de Git mir wëssen. Wéi de Kommando, dee mir Verpflichtungen oder Rebasen maachen.

GUI steet fir "Graphesch Uze sinn Interface" an et ass den Interface op deem mir "navigéieren". Besser gesot, en Desktop-Ëmfeld am Allgemengen ass eng GUI.

En "API Schlëssel" ass eng Aart vun enger geheimer String / Datei déi Dir benotzt fir Servicer ze authentifizéieren. Opgepasst datt et 2 Faktor Authentifikatioun ëmgeet a sou weider wann Dir Iech domat authentifizéiert. Also vergewëssert Iech datt se sécher sinn an iergendwou dat net erreechbar ass mat anere Mëttelen.

Éischt vun all, wat ass dëst Instrument? Wéi behandelt et Operatiounen déi mir duerch Git CLI maache géifen?

"gh" kann als Open Source ugesi ginn (Source Code) wrapper benotzt Git CLI selwer a GitHub APIs fir Saachen gemaach ze kréien. Tatsächlech kënnt Dir souguer Parameteren un d'Git Kommandoen passéieren déi se benotzt! Ech kommen herno op déi.

Installatioun an Ariichten

Denkt drun datt ech d'Installatioun duerchgoën mat Termux. Awer d'Prozedur sollt zimmlech d'selwecht sinn wéi Dir op engem Debian-baséiert Distro hätt - Ubuntu huet et zum Beispill op hiren offiziellen Repos. Fir Windows, gutt, Dir braucht entweder CygWin oder WSL ech huelen un. ¯\_(ツ)_/¯

# Loosst eis d'Tool als éischt installéieren. Installéiert och Git well et de Backend # fir gh ass. $ pkg install git gh -y # Dann ier alles musse mir authentifizéieren. Dëst späichert en # neien API-Schlëssel op der Datebank vum Tool sou datt Dir # net nach eng Kéier authentifizéiere musst. Wann Dir scho GITHUB_TOKEN agestallt hutt, funktionnéiert dëst net sou deset # et fir d'éischt. :) $ gh auth Login

Elo, ier mer hei weidergoen, muss ech e puer Saachen opweisen.

  • éischtens, wielt net "GitHub Enterprise Server" wann Dir keng Aart vu Self-Host GitHub hutt.
  • Zweetens, benotzt SSH anstatt HTTPS wann Dir Ären ëffentleche Schlëssel op Ärem GitHub Kont bäigefüügt hutt. Am Fall wou Dir den API Schlëssel verléiert, verléiert Dir op d'mannst Äre SSH Schlëssel net sou datt et och eng gutt Réckfallmethod kann sinn.
  • Drëttens, wielt aloggen mat Browser nëmmen wann Dir keen API Schlëssel op der Hand hunn! Wierklech, et wier kee Sënn fir en anere Schlëssel ze hunn wann Dir schonn een hutt.

Wann Dir fäerdeg sidd d'Saachen opzestellen, loosst eis dem Git CLI doriwwer soen.

$ gh auth setup-git

Dëst wäert déi néideg Git CLI Konfiguratioune maachen just am Fall wou Är Reflexer erakommen an Iech Git amplaz GH benotzen.

E puer grondleeënd Kommandoen

Elo datt Dir GH ageriicht hutt, loosst mech Iech verschidde Basisbefehle an enger Geschichtbasis léieren.

Als éischt, loosst eis soen, Dir wëllt eng Pull-Ufro un meng lokal Manifestatiounsrepo erstellen. Dir wëllt et fir d'éischt zéien.

$ gh repo Gabel windowsz414/platform_manifest! windowz414/platform_manifest existéiert schonn? Wëllt Dir d'Gabel klonen? Jo Klonen an 'platform_manifest'... Remote: Objekter opzielen: 136, fäerdeg. Remote: Objekter zielen: 100% (136/136), gemaach. Remote: Compressing Objete: 100% (81/81), gemaach. Remote: Ganzen 136 (Delta 46), weiderbenotzt 89 (Delta 12), Pak-Wiederbenotzt 0 Erhalen Objete: 100% (136/136), 30.70 KiB | 166.00 KiB/s, gemaach. Opléisung Deltas: 100% (46/46), gemaach. Upstream Aktualiséierung Vun github.com:windowz414/platform_manifest * [new branch] amyrom/rosie -> upstream/amyrom/rosie * [new branch] aosp-eleven -> upstream/aosp-eleven * [new branch] aosp-ten -> upstream/aosp-ten * [new branch] arrow-11.0 -> upstream/arrow-11.0 * [new branch] cm-14.1 -> upstream/cm-14.1 * [new branch] dot11 -> upstream/dot11 * [new branch] ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [new branch] fluid-11 -> upstream/fluid-11 * [new branch] fox_7.1 -> upstream/fox_7.1 * [new branch] hentai-rika -> upstream/hentai-rika * [new branch] ion-pie -> upstream/ion-pie * [new branch] lineage-15.1 -> upstream/lineage-15.1 * [new 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 - > upstream/lineage-19.0 * [nei Branche] Haapt -> Upstream / Haapt * [nei Branche] mkn-mr1 -> Upstream/mkn-mr1 * [nei Branche] revengeos-r11.0 -> upstream/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

Da loosst eis soen datt Dir eng separat Organisatioun fir Är Experimenter genannt "wz414-labs" hutt, datt Dir nach net op Äre perséinleche Profil gefuer hutt a wëllt do klonen, dann oppen Pull Ufro do duerch amplaz. Dir wëllt och d'"cm-14.1" Branche klone sou datt Dir net erëm Git-Checkout braucht.

$ gh repo Gabel windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Erstellt Gabel wz414-labs/platform_manifest? Wëllt Dir d'Gabel klonen? Jo Klonen an 'platform_manifest'... Remote: Objekter opzielen: 136, fäerdeg. Remote: Objekter zielen: 100% (136/136), gemaach. Remote: Compressing Objete: 100% (81/81), gemaach. Remote: Ganzen 136 (Delta 46), weiderbenotzt 89 (Delta 12), Pak-Wiederbenotzt 0 Erhalen Objete: 100% (136/136), 30.70 KiB | 120.00 KiB/s, gemaach. Opléisung Deltas: 100% (46/46), gemaach. Upstream Aktualiséierung Vun github.com:windowz414/platform_manifest * [new branch] amyrom/rosie -> upstream/amyrom/rosie * [new branch] aosp-eleven -> upstream/aosp-eleven * [new branch] aosp-ten -> upstream/aosp-ten * [new branch] arrow-11.0 -> upstream/arrow-11.0 * [new branch] cm-14.1 -> upstream/cm-14.1 * [new branch] dot11 -> upstream/dot11 * [new branch] ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [new branch] fluid-11 -> upstream/fluid-11 * [new branch] fox_7.1 -> upstream/fox_7.1 * [new branch] hentai-rika -> upstream/hentai-rika * [new branch] ion-pie -> upstream/ion-pie * [new branch] lineage-15.1 -> upstream/lineage-15.1 * [new 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 - > upstream/lineage-19.0 * [nei Branche] Haapt -> Upstream / Haapt * [nei Branche] mkn-mr1 -> Upstream/mkn-mr1 * [nei Branche] revengeos-r11.0 -> upstream/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

Dir gesitt, ech hunn net "-b cm-14.1" benotzt an amplaz dat laangt Argument gemaach. Zënter dem Datum vun dësem Artikel, de 16. Februar 2022, huet GH e Feeler datt et net kuerz Argumenter op Git CLI korrekt passéiert an dofir muss et als laang Argumenter amplaz gemaach ginn.

Wann dat gemaach ass, sidd Dir regelméisseg an den Dossier erakomm, Är Ännerungen gemaach, engagéiert a gedréckt, a sidd prett fir Pull-Ufro ze maachen. Fir dëst, alles wat Dir braucht ass eng einfach

$ gh pr create --branch="cm-14.1" Erstellt Pull-Ufro fir wz414-labs:cm-14.1 an cm-14.1 am windowz414/platform_manifest? Titel teos: Änneren op Git-Polycule? Kierper ? Wat ass nächst? Gitt https://github.com/windowz414/platform_manifest/pull/1 of

Wann Dir net "–Branch=cm-14.1" bäidréit, géift Dir PR Richtung "Main" Branche kreéieren, wat natierlech Problemer verursaacht wann et net richteg gehandhabt gëtt.

An elo muss ech dëse PR fusionéieren, richteg? Also ech klonen fir d'éischt de Repo, kréie fir d'Zeil déi zougewisen ass, a lëschten PRs als éischt.

# Klonen als éischt. $ git Klon https://github.com/windowz414/platform_manifest Klonen an 'platform_manifest'... Remote: Objekter opzielen: 136, fäerdeg. Remote: Objekter zielen: 100% (136/136), gemaach. Remote: Compressing Objete: 100% (81/81), gemaach. Remote: Ganzen 136 (Delta 46), weiderbenotzt 89 (Delta 12), Pak-Wiederbenotzt 0 Erhalen Objete: 100% (136/136), 30.70 KiB | 137.00 KiB/s, gemaach. Opléisung Deltas: 100% (46/46), gemaach. # Dann auschecken an d'Branche. $ git checkout cm-14.1 Branche 'cm-14.1' opgestallt fir 'origin/cm-14.1' ze verfolgen. Gewiesselt op eng nei Branche 'cm-14.1' # An elo PRs oplëschten. $ gh pr Lëscht Weist 1 vun 1 oppe Pull Ufro am windowz414/platform_manifest #1 teos: Ännerung op Git-Polycule wz414-labs:cm-14.1

Elo datt mir gesinn datt et e PR gëtt fir Fernbedienung op "Git-Polycule" z'änneren, loosst eis kucken wat domat geännert huet.

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

Schéngt villverspriechend! Zäit fir ze fusionéieren!

$gh pr fusionéieren 1? Wéi eng Fusiounsmethod wëllt Dir benotze? Rebaséieren a fusionéieren? Wat ass nächst? Gitt ✓ Rebaséiert a fusionéiert Pull Ufro #1 (Teos: Änneren op Git-Polycule)

Elo datt ech et fusionéiert hunn, kënnt Dir Är Gabel läschen.

$ gh repo läschen --confirm wz414-labs/platform_manifest ✓ Geläscht Repository wz414-labs/platform_manifest

Dir gesitt datt de Repo direkt geläscht huet ouni Bestätegungsufro well ech de "–confirm" Parameter do passéiert hunn. Wann Dir et net passéiert, kritt Dir dëst:

$ gh repo läschen windowsz414/systemd? Typ windowz414/systemd fir d'Läschung ze bestätegen:

An Dir musst de ganze Repo Numm tippen. Zäit verschwenden…

Resumé

Einfach gesot, 'gh' ass e zimlech vereinfachte Git CLI / Curl Wrapper déi einfach Git Operatiounen a GitHub API Saachen ënner dem selwechten Daach vereenegt. Wéi benotzt Dir et? Gesäit et Iech verspriechend aus wéi et fir mech mécht? Freeën eis vun Iech ze héieren!

Verbonnen Artikelen