Jika anda telah menggunakan GitHub dan memilih baris arahan seperti saya untuk menyelesaikan segala-galanya tanpa sebarang komplikasi pada GUI, anda mungkin perasan bagaimana GitHub mula menggunakan alat mereka yang tidak begitu baharu yang dipanggil "gh". Saya memutuskan untuk mencubanya, kerana ia kelihatan menjanjikan selepas semua. Dan saya secara peribadi sangat menyukainya - Sehinggakan saya ingin membuat artikel mengenainya!
Sebelum kita mulakan, saya perlu menerangkan beberapa istilah yang akan saya gunakan dalam artikel ini.
“GH” bermaksud “GitHub”. Di sinilah nama alat itu berasal juga, jadi ia tidak boleh dikelirukan dengan Git itu sendiri. Untuk menerangkan perkara yang dilakukan secara umum, anda boleh membuat, garpu, memadam, menyemak imbas repo; buat permintaan tarik; dan banyak lagi. Sekiranya anda tidak menemui ciri tetapi juga tidak mahu meninggalkan terminal, ia juga menyediakan pelayar berasaskan teks untuk anda menyemak imbas halaman dalam GitHub.
“CLI” bermaksud “Command LIne Iantara muka”. Terminal itu (atau dalam Windows, Command Prompt) adalah salah satu daripadanya. Jika terdapat "CLI" yang dilampirkan di sebelah nama apl (“Git CLI” untuk artikel ini), ini bermakna apl itu berjalan melalui terminal sahaja. Dan "Git CLI" dalam konteks ini ialah, Git yang kita tahu. Seperti perintah yang kami buat komit atau rebases dengan.
GUI bermaksud “Gberirama Ulihat Interface” dan ini adalah antara muka yang kita “navigasi”. Lebih baik dikatakan, persekitaran desktop secara umum ialah GUI.
"Kunci API" ialah sejenis rentetan/fail rahsia yang anda gunakan untuk mengesahkan perkhidmatan. Berhati-hati bahawa ia memintas pengesahan 2 faktor dan seterusnya apabila anda mengesahkan dengannya. Oleh itu, pastikan anda menyimpannya dengan selamat dan di tempat yang tidak dapat dicapai dengan cara lain.
Pertama sekali, apakah alat ini? Bagaimanakah ia mengendalikan operasi yang akan kami lakukan melalui Git CLI?
“gh” boleh dianggap sebagai sumber terbuka (Kod Sumber) pembungkus menggunakan Git CLI sendiri dan API GitHub untuk menyelesaikan sesuatu. Malah, anda juga boleh menghantar parameter kepada arahan Git yang digunakannya! Saya akan membahasnya kemudian.
Memasang dan menyiapkan
Perlu diingat bahawa saya akan melalui pemasangan menggunakan termux. Tetapi prosedurnya sepatutnya hampir sama seperti yang anda boleh lakukan pada distro berasaskan Debian - Ubuntu mempunyainya pada repo rasmi mereka sebagai contoh. Untuk Windows, anda perlu sama ada CygWin atau WSL saya rasa. ¯\_(ツ)_/¯
# Mari pasang alat dahulu. Juga memasang Git kerana ia adalah bahagian belakang # untuk gh. $ pkg install git gh -y # Kemudian sebelum semuanya, kita perlu mengesahkan. Ini akan menyimpan # kunci API baharu pada pangkalan data alat supaya anda tidak perlu mengesahkan # lagi. Jika anda telah menetapkan GITHUB_TOKEN, ini tidak akan berfungsi jadi nyahsetkan #nya dahulu. :) $ gh auth log masuk
Sekarang, sebelum kita meneruskan di sini, saya perlu menunjukkan beberapa perkara.
- Pertamanya, jangan pilih “GitHub Enterprise Server” jika anda tidak mempunyai sejenis GitHub yang dihoskan sendiri.
- Kedua, gunakan SSH dan bukannya HTTPS jika anda menambahkan kunci awam anda pada akaun GitHub anda. Sekiranya anda kehilangan kunci API, anda sekurang-kurangnya tidak akan kehilangan kunci SSH anda supaya ia boleh menjadi kaedah sandaran yang baik juga.
- Ketiga, pilih log masuk dengan penyemak imbas hanya jika anda tidak mempunyai kunci API di tangan! Sungguh, tidak masuk akal untuk mempunyai kunci lain sedangkan anda sudah memilikinya.
Sebaik sahaja anda selesai menyediakan perkara, mari beritahu Git CLI mengenainya.
$ gh auth setup-git
Ini akan menjadikan konfigurasi Git CLI yang diperlukan sekiranya refleks anda masuk dan membuat anda menggunakan Git dan bukannya GH.
Beberapa arahan asas
Sekarang anda telah menyediakan GH, izinkan saya mengajar anda beberapa arahan asas dalam asas cerita.
Pertama sekali, katakan anda ingin membuat permintaan tarik ke repo manifes tempatan saya. Awak nak garpu dulu.
$ gh repo fork windowz414/platform_manifest ! windowz414/platform_manifest sudah wujud ? Adakah anda ingin mengklon garpu? Ya Mengklon ke 'platform_manifest'... jauh: Menghitung objek: 136, selesai. jauh: Mengira objek: 100% (136/136), selesai. jauh: Memampatkan objek: 100% (81/81), selesai. jauh: Jumlah 136 (delta 46), digunakan semula 89 (delta 12), pek digunakan semula 0 Menerima objek: 100% (136/136), 30.70 KiB | 166.00 KiB/s, selesai. Menyelesaikan delta: 100% (46/46), selesai. Mengemas kini huluan Dari github.com:windowz414/platform_manifest * [cawangan baharu] amyrom/rosie -> hulu/amyrom/rosie * [cawangan baharu] aosp-eleven -> hulu/aosp-eleven * [cawangan baharu] aosp-ten -> hulu/aosp-ten * [cawangan baharu] arrow-11.0 -> hulu/anak panah-11.0 * [cawangan baharu] cm-14.1 -> hulu/cm-14.1 * [cawangan baharu] dot11 -> hulu/dot11 * [cawangan baharu ] e/os/v1-nougat -> hulu/e/os/v1-nougat * [cawangan baharu] cecair-11 -> hulu/cecair-11 * [cawangan baharu] fox_7.1 -> hulu/musang_7.1 * [cawangan baru] hentai-rika -> hulu/hentai-rika * [cawangan baharu] pai ion -> hulu/pai ion * [cawangan baharu] keturunan-15.1 -> hulu/keturunan-15.1 * keturunan [cawangan baharu] -17.1 -> hulu/keturunan-17.1 * [cawangan baharu] keturunan-18.1 -> hulu/keturunan-18.1 * [cawangan baharu] keturunan-18.1_teos -> hulu/keturunan-18.1_teos * [cawangan baharu] keturunan-19.0 - > hulu/keturunan-19.0 * [cawangan baharu] utama -> hulu/utama * [cawangan baharu] mkn-mr1 -> hulu/mkn-mr1 * [cawangan baharu] revengeos-r11.0 -> hulu/revengeos-r11.0. 1 * [cawangan baharu] stellar-S1 -> hulu/bintang-S11 * [cawangan baharu] teos-n -> hulu/teos-n * [cawangan baharu] weebprojekt-11 -> hulu/weebprojekt-XNUMX ✓ Garpu klon
Kemudian katakan anda mempunyai organisasi berasingan untuk eksperimen anda yang dipanggil "wz414-labs", yang anda belum buat lagi pada profil peribadi anda dan mahu mengklon di sana kemudian membuka permintaan tarik melalui sana sebaliknya. Anda juga ingin mengklon cawangan "cm-14.1" supaya anda tidak perlu melakukan git-checkout kepadanya lagi.
$ gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Buat fork wz414-labs/platform_manifest ? Adakah anda ingin mengklon garpu? Ya Mengklon ke 'platform_manifest'... jauh: Menghitung objek: 136, selesai. jauh: Mengira objek: 100% (136/136), selesai. jauh: Memampatkan objek: 100% (81/81), selesai. jauh: Jumlah 136 (delta 46), digunakan semula 89 (delta 12), pek digunakan semula 0 Menerima objek: 100% (136/136), 30.70 KiB | 120.00 KiB/s, selesai. Menyelesaikan delta: 100% (46/46), selesai. Mengemas kini huluan Dari github.com:windowz414/platform_manifest * [cawangan baharu] amyrom/rosie -> hulu/amyrom/rosie * [cawangan baharu] aosp-eleven -> hulu/aosp-eleven * [cawangan baharu] aosp-ten -> hulu/aosp-ten * [cawangan baharu] arrow-11.0 -> hulu/anak panah-11.0 * [cawangan baharu] cm-14.1 -> hulu/cm-14.1 * [cawangan baharu] dot11 -> hulu/dot11 * [cawangan baharu ] e/os/v1-nougat -> hulu/e/os/v1-nougat * [cawangan baharu] cecair-11 -> hulu/cecair-11 * [cawangan baharu] fox_7.1 -> hulu/musang_7.1 * [cawangan baru] hentai-rika -> hulu/hentai-rika * [cawangan baharu] pai ion -> hulu/pai ion * [cawangan baharu] keturunan-15.1 -> hulu/keturunan-15.1 * keturunan [cawangan baharu] -17.1 -> hulu/keturunan-17.1 * [cawangan baharu] keturunan-18.1 -> hulu/keturunan-18.1 * [cawangan baharu] keturunan-18.1_teos -> hulu/keturunan-18.1_teos * [cawangan baharu] keturunan-19.0 - > hulu/keturunan-19.0 * [cawangan baharu] utama -> hulu/utama * [cawangan baharu] mkn-mr1 -> hulu/mkn-mr1 * [cawangan baharu] revengeos-r11.0 -> hulu/revengeos-r11.0. 1 * [cawangan baharu] stellar-S1 -> hulu/bintang-S11 * [cawangan baharu] teos-n -> hulu/teos-n * [cawangan baharu] weebprojekt-11 -> hulu/weebprojekt-XNUMX ✓ Garpu klon
Anda lihat saya tidak menggunakan "-b cm-14.1" dan sebaliknya melakukan hujah panjang. Mulai tarikh artikel ini, 16 Februari 2022, GH mempunyai pepijat yang tidak menghantar hujah pendek kepada Git CLI dengan betul dan oleh itu ia perlu dilakukan sebagai hujah yang panjang.
Setelah itu selesai, anda kerap memasuki folder, melakukan perubahan anda, komited kemudian menolaknya, dan bersedia untuk melakukan permintaan tarik. Untuk ini, semua yang anda perlukan adalah mudah
$ gh pr create --branch="cm-14.1" Mencipta permintaan tarik untuk wz414-labs:cm-14.1 ke dalam cm-14.1 dalam windowz414/platform_manifest ? Tajuk teos: Tukar kepada Git-Polycule ? Badan ? Apa yang akan datang? Serahkan https://github.com/windowz414/platform_manifest/pull/1
Jika anda tidak menambahkan “–branch=cm-14.1”, anda akan mencipta PR ke arah cawangan “utama”, yang sudah tentu akan menyebabkan isu apabila ia tidak dikendalikan dengan betul.
Dan sekarang, saya perlu menggabungkan PR ini, bukan? Jadi saya mula-mula mengklon repo, membuat pembayaran ke cawangan yang ditetapkan, dan menyenaraikan PR terlebih dahulu.
# Pengklonan dahulu. $ git clone https://github.com/windowz414/platform_manifest Pengklonan ke 'platform_manifest'... jauh: Menghitung objek: 136, selesai. jauh: Mengira objek: 100% (136/136), selesai. jauh: Memampatkan objek: 100% (81/81), selesai. jauh: Jumlah 136 (delta 46), digunakan semula 89 (delta 12), pek digunakan semula 0 Menerima objek: 100% (136/136), 30.70 KiB | 137.00 KiB/s, selesai. Menyelesaikan delta: 100% (46/46), selesai. # Kemudian menyemak ke cawangan. $ git checkout cm-14.1 cawangan 'cm-14.1' disediakan untuk menjejaki 'asal/cm-14.1'. Bertukar ke cawangan baharu 'cm-14.1' # Dan kini menyenaraikan PR. $ gh pr senarai Menunjukkan 1 daripada 1 permintaan tarik terbuka dalam windowz414/platform_manifest #1 teos: Tukar kepada Git-Polycule wz414-labs:cm-14.1
Sekarang setelah kita melihat terdapat PR untuk menukar alat kawalan jauh kepada "Git-Polycule", mari lihat apa yang telah berubah dengannya.
$ gh pr perbezaan 1 perbezaan --git a/teos.xml b/teos.xml indeks b145fc0..3aadeb6 100644 --- a/teos.xml +++ b/teos.xml @@ -2,7 +2,7, 414 @@
Nampak menjanjikan! Masa untuk bergabung!
$ gh pr gabungkan 1 ? Apakah kaedah gabungan yang anda ingin gunakan? Pangkalan semula dan gabungkan? Apa yang akan datang? Serahkan ✓ Permintaan tarik berasaskan semula dan digabungkan #1 (teos: Tukar kepada Git-Polycule)
Sekarang setelah saya menggabungkannya, anda boleh memadamkan garpu anda.
$ gh repo delete --confirm wz414-labs/platform_manifest ✓ Repositori wz414-labs/platform_manifest dipadam
Anda melihat bahawa terus memadam repo tanpa permintaan pengesahan kerana saya lulus parameter "–confirm" di sana. Jika anda tidak lulus, anda akan mendapat ini:
$ gh repo padam windowz414/systemd ? Taip windowz414/systemd untuk mengesahkan pemadaman:
Dan anda perlu menaip seluruh nama repo. Pembaziran masa…
Ringkasan
Ringkasnya, `gh` ialah pembungkus Git CLI/Curl yang cukup ringkas yang menyatukan operasi Git mudah dan perkara API GitHub di bawah bumbung yang sama. Bagaimana anda menggunakannya? Adakah ia kelihatan menjanjikan kepada anda seperti ia kepada saya? Tidak sabar untuk mendengar daripada anda!