Alat baris perintah GitHub yang mudah digunakan: “gh”!

Jika Anda telah menggunakan GitHub dan lebih memilih baris perintah seperti saya untuk menyelesaikan semuanya tanpa komplikasi pada GUI, Anda mungkin telah memperhatikan bagaimana GitHub mulai menggunakan alat mereka yang tidak terlalu baru yang disebut “gh”. Saya memutuskan untuk mencobanya, karena kelihatannya menjanjikan. Dan saya pribadi sangat menyukainya – Saya sangat ingin membuat artikel tentangnya!

Namun sebelum kita mulai, saya perlu menjelaskan beberapa istilah yang akan saya gunakan dalam artikel ini.

“GH” adalah singkatan dari “GitHub”. Dari sinilah nama alat ini berasal, jadi tidak bisa disamakan dengan Git itu sendiri. Untuk menjelaskan fungsinya secara umum, Anda dapat membuat, membagi, menghapus, menelusuri repo; membuat permintaan tarik; dan masih banyak lagi. Jika Anda tidak dapat menemukan fitur tetapi juga tidak ingin keluar dari terminal, ia juga menyediakan browser berbasis teks bagi Anda untuk menelusuri halaman di GitHub.

“CLI” adalah singkatan dari “Cperintah Line Iantarmuka”. Terminal itu (atau di Windows, Command Prompt) adalah salah satunya. Jika ada “CLI” yang ditambahkan di samping nama aplikasi (“Git CLI” untuk artikel ini), itu berarti aplikasi hanya berjalan melalui terminal. Dan “Git CLI” dalam konteks ini adalah Git yang kita kenal. Seperti perintah yang kita gunakan untuk melakukan commit atau rebase.

GUI adalah singkatan dari “Gkasar Umelihat Interface” dan itu adalah antarmuka tempat kita “menavigasi”. Lebih baik dikatakan, lingkungan desktop secara umum adalah GUI.

“Kunci API” adalah semacam string/file rahasia yang Anda gunakan untuk mengautentikasi layanan. Berhati-hatilah karena ini melewati otentikasi 2 faktor dan seterusnya saat Anda mengautentikasi dengannya. Jadi pastikan untuk menyimpannya dengan aman dan di tempat yang jauh dari jangkauan cara lain.

Pertama-tama, alat apa ini? Bagaimana cara menangani operasi yang akan kita lakukan melalui Git CLI?

“gh” dapat dianggap sebagai sumber terbuka (Sumber Kode) wrapper memanfaatkan Git CLI itu sendiri dan API GitHub untuk menyelesaikan sesuatu. Bahkan, Anda bahkan bisa meneruskan parameter ke perintah Git yang digunakannya! Saya akan membahasnya nanti.

Menginstal dan mengatur

Ingatlah bahwa saya akan melakukan instalasi menggunakan termux. Tetapi prosedurnya harusnya hampir sama seperti yang Anda lakukan pada distro berbasis Debian – Ubuntu memilikinya di repo resmi mereka misalnya. Untuk Windows, saya kira Anda memerlukan CygWin atau WSL. ¯\_(ツ)_/¯

# Mari kita instal alatnya terlebih dahulu. Juga menginstal Git sebagai backend # untuk gh. $ pkg install git gh -y # Lalu sebelum semuanya, kita perlu mengautentikasi. Ini akan menyimpan # kunci API baru pada database alat sehingga Anda tidak perlu mengautentikasi # lagi. Jika Anda sudah menyetel GITHUB_TOKEN, ini tidak akan berfungsi, jadi hapus # terlebih dahulu. :) $ gh autentikasi masuk

Sekarang, sebelum kita melanjutkan di sini, saya perlu menunjukkan beberapa hal.

  • Pertama, jangan pilih “GitHub Enterprise Server” jika Anda tidak memiliki GitHub yang dihosting sendiri.
  • Kedua, gunakan SSH alih-alih HTTPS jika kunci publik Anda ditambahkan di akun GitHub Anda. Jika Anda kehilangan kunci API, setidaknya Anda tidak akan kehilangan kunci SSH sehingga ini juga bisa menjadi metode cadangan yang baik.
  • Ketiga, pilih login dengan browser hanya jika Anda tidak memiliki kunci API! Sungguh, tidak masuk akal untuk memiliki kunci lain saat Anda sudah memilikinya.

Setelah Anda selesai mengatur semuanya, mari beri tahu Git CLI tentang hal itu.

$ gh auth pengaturan-git

Ini akan membuat konfigurasi Git CLI yang diperlukan untuk berjaga-jaga jika refleks Anda menerobos masuk dan membuat Anda menggunakan Git, bukan GH.

Beberapa perintah dasar

Sekarang setelah Anda menyiapkan GH, izinkan saya mengajari Anda beberapa perintah dasar berdasarkan cerita.

Pertama-tama, katakanlah Anda ingin membuat permintaan tarik ke repo manifes lokal saya. Anda ingin membaginya terlebih dahulu.

$ gh garpu repo windowz414/platform_manifest! windowz414/platform_manifest sudah ada? Apakah Anda ingin mengkloning garpu? Ya Mengkloning ke 'platform_manifest'... jarak jauh: Menghitung objek: 136, selesai. remote: Menghitung objek: 100% (136/136), selesai. remote: Mengompresi objek: 100% (81/81), selesai. jarak jauh: Total 136 (delta 46), digunakan kembali 89 (delta 12), paket digunakan kembali 0 Menerima objek: 100% (136/136), 30.70 KiB | 166.00 KiB/dtk, selesai. Penyelesaian delta: 100% (46/46), selesai. Memperbarui upstream Dari github.com:windowz414/platform_manifest * [cabang baru] amyrom/rosie -> upstream/amyrom/rosie * [cabang baru] aosp-eleven -> upstream/aosp-eleven * [cabang baru] aosp-ten -> upstream/aosp-ten * [cabang baru] panah-11.0 -> upstream/panah-11.0 * [cabang baru] cm-14.1 -> upstream/cm-14.1 * [cabang baru] dot11 -> upstream/dot11 * [cabang baru ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [cabang baru] fluid-11 -> upstream/fluid-11 * [cabang baru] fox_7.1 -> upstream/fox_7.1 * [cabang baru] hentai-rika -> upstream/hentai-rika * [cabang baru] ion-pie -> upstream/ion-pie * [cabang baru] lineage-15.1 -> upstream/lineage-15.1 * [cabang baru] lineage -17.1 -> upstream/lineage-17.1 * [cabang baru] lineage-18.1 -> upstream/lineage-18.1 * [cabang baru] lineage-18.1_teos -> upstream/lineage-18.1_teos * [cabang baru] lineage-19.0 - > upstream/lineage-19.0 * [cabang baru] main -> upstream/main * [cabang baru] mkn-mr1 -> upstream/mkn-mr1 * [cabang baru] balas dendam-r11.0 -> upstream/revengeos-r11.0. 1 * [cabang baru] stellar-S1 -> upstream/stellar-S11 * [cabang baru] teos-n -> upstream/teos-n * [cabang baru] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Garpu kloning

Lalu katakanlah Anda memiliki organisasi terpisah untuk eksperimen Anda yang disebut "wz414-labs", yang belum Anda fork pada profil pribadi Anda dan ingin mengkloningnya di sana, lalu buka permintaan tarik melalui sana. Anda juga ingin mengkloning cabang “cm-14.1” sehingga Anda tidak perlu melakukan git-checkout lagi.

$ gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ Membuat fork wz414-labs/platform_manifest ? Apakah Anda ingin mengkloning garpu? Ya Mengkloning ke 'platform_manifest'... jarak jauh: Menghitung objek: 136, selesai. remote: Menghitung objek: 100% (136/136), selesai. remote: Mengompresi objek: 100% (81/81), selesai. jarak jauh: Total 136 (delta 46), digunakan kembali 89 (delta 12), paket digunakan kembali 0 Menerima objek: 100% (136/136), 30.70 KiB | 120.00 KiB/dtk, selesai. Penyelesaian delta: 100% (46/46), selesai. Memperbarui upstream Dari github.com:windowz414/platform_manifest * [cabang baru] amyrom/rosie -> upstream/amyrom/rosie * [cabang baru] aosp-eleven -> upstream/aosp-eleven * [cabang baru] aosp-ten -> upstream/aosp-ten * [cabang baru] panah-11.0 -> upstream/panah-11.0 * [cabang baru] cm-14.1 -> upstream/cm-14.1 * [cabang baru] dot11 -> upstream/dot11 * [cabang baru ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [cabang baru] fluid-11 -> upstream/fluid-11 * [cabang baru] fox_7.1 -> upstream/fox_7.1 * [cabang baru] hentai-rika -> upstream/hentai-rika * [cabang baru] ion-pie -> upstream/ion-pie * [cabang baru] lineage-15.1 -> upstream/lineage-15.1 * [cabang baru] lineage -17.1 -> upstream/lineage-17.1 * [cabang baru] lineage-18.1 -> upstream/lineage-18.1 * [cabang baru] lineage-18.1_teos -> upstream/lineage-18.1_teos * [cabang baru] lineage-19.0 - > upstream/lineage-19.0 * [cabang baru] main -> upstream/main * [cabang baru] mkn-mr1 -> upstream/mkn-mr1 * [cabang baru] balas dendam-r11.0 -> upstream/revengeos-r11.0. 1 * [cabang baru] stellar-S1 -> upstream/stellar-S11 * [cabang baru] teos-n -> upstream/teos-n * [cabang baru] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Garpu kloning

Anda tahu, saya tidak menggunakan “-b cm-14.1” dan malah melakukan argumen panjang. Pada tanggal artikel ini, 16 Februari 2022, GH memiliki bug yang tidak meneruskan argumen pendek ke Git CLI dengan benar sehingga perlu dilakukan argumen panjang.

Setelah selesai, Anda secara rutin masuk ke folder tersebut, melakukan perubahan, mengkomit lalu mendorongnya, dan siap melakukan permintaan tarik. Untuk ini, yang Anda butuhkan hanyalah yang sederhana

$ gh pr create --branch="cm-14.1" Membuat permintaan tarik untuk wz414-labs:cm-14.1 menjadi cm-14.1 di windowz414/platform_manifest? Judulnya: Ubah ke Git-Polycule? Tubuh ? Apa berikutnya? Kirim https://github.com/windowz414/platform_manifest/pull/1

Jika Anda tidak menambahkan “–branch=cm-14.1”, Anda akan membuat PR menuju cabang “utama”, yang tentu saja akan menimbulkan masalah jika tidak ditangani dengan benar.

Dan sekarang, saya perlu menggabungkan PR ini, bukan? Jadi saya pertama-tama mengkloning repo, checkout ke cabang yang ditugaskan, dan daftar PR terlebih dahulu.

# Kloning terlebih dahulu. $ git clone https://github.com/windowz414/platform_manifest Mengkloning ke 'platform_manifest'... jarak jauh: Menghitung objek: 136, selesai. remote: Menghitung objek: 100% (136/136), selesai. remote: Mengompresi objek: 100% (81/81), selesai. jarak jauh: Total 136 (delta 46), digunakan kembali 89 (delta 12), paket digunakan kembali 0 Menerima objek: 100% (136/136), 30.70 KiB | 137.00 KiB/dtk, selesai. Penyelesaian delta: 100% (46/46), selesai. #Kemudian check out ke cabang. $ git checkout cm-14.1 cabang 'cm-14.1' diatur untuk melacak 'asal/cm-14.1'. Beralih ke cabang baru 'cm-14.1' # Dan sekarang mencantumkan PR. $ gh pr list Menampilkan 1 dari 1 permintaan tarik terbuka di windowz414/platform_manifest #1 teos: Ubah ke Git-Polycule wz414-labs:cm-14.1

Sekarang kita melihat ada PR untuk mengubah remote menjadi “Git-Polycule”, mari kita lihat apa yang berubah dengannya.

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

Tampaknya menjanjikan! Saatnya bergabung!

$gh pr menggabungkan 1? Metode penggabungan apa yang ingin Anda gunakan? Rebase dan gabungkan? Apa berikutnya? Kirim ✓ Permintaan tarik #1 yang diubah dan digabungkan (teos: Ubah ke Git-Polycule)

Sekarang setelah saya menggabungkannya, Anda dapat menghapus garpu Anda.

$ gh repo delete --confirm wz414-labs/platform_manifest ✓ Repositori yang dihapus wz414-labs/platform_manifest

Anda melihatnya langsung menghapus repo tanpa permintaan konfirmasi karena saya meneruskan parameter “–confirm” di sana. Jika Anda tidak lulus, Anda akan mendapatkan ini:

$ gh repo hapus windowz414/systemd? Ketik windowz414/systemd untuk mengonfirmasi penghapusan:

Dan Anda perlu mengetikkan seluruh nama repo. Buang-buang waktu…

Kesimpulan

Sederhananya, `gh` adalah pembungkus Git CLI/Curl yang cukup disederhanakan yang menyatukan operasi Git sederhana dan hal-hal GitHub API di bawah satu atap. Bagaimana Anda memanfaatkannya? Apakah bagi Anda hal itu terlihat menjanjikan seperti halnya bagi saya? Berharap mendengar kabar darimu!

Artikel terkait