ឧបករណ៍បន្ទាត់ពាក្យបញ្ជារបស់ GitHub ងាយស្រួលប្រើ៖ “gh”!

ប្រសិនបើអ្នកបានប្រើ GitHub ហើយចូលចិត្តបន្ទាត់ពាក្យបញ្ជាដូចខ្ញុំ ដើម្បីធ្វើអ្វីៗគ្រប់យ៉ាងដោយមិនមានភាពស្មុគស្មាញណាមួយនៅលើ GUI អ្នកប្រហែលជាបានកត់សម្គាល់ពីរបៀបដែល GitHub ចាប់ផ្តើមប្រើប្រាស់ឧបករណ៍ដែលមិនមែនជាថ្មីរបស់ពួកគេដែលមានឈ្មោះថា "gh"។ ខ្ញុំ​សម្រេច​ចិត្ត​បាញ់​វា ព្រោះ​វា​មើល​ទៅ​មាន​ការ​សន្យា។ ហើយខ្ញុំផ្ទាល់ចូលចិត្តវាខ្លាំងណាស់ - ខ្លាំងណាស់ដែលខ្ញុំចង់បង្កើតអត្ថបទអំពីវា!

មុនពេលយើងចាប់ផ្តើម ខ្ញុំចង់ពន្យល់ពាក្យមួយចំនួនដែលខ្ញុំនឹងប្រើនៅក្នុងអត្ថបទនេះ។

"GH" តំណាងឱ្យ "GitHub” ។ នេះគឺជាកន្លែងដែលឈ្មោះឧបករណ៍មានប្រភពមកពីផងដែរ ដូច្នេះវាមិនអាចច្រឡំជាមួយ Git ខ្លួនឯងបានទេ។ ដើម្បីពន្យល់ពីអ្វីដែលវាធ្វើជាទូទៅ អ្នកអាចបង្កើត, fork, delete, browse repos; បង្កើតសំណើទាញ; និងច្រើនទៀត។ ក្នុងករណីដែលអ្នកមិនអាចរកឃើញលក្ខណៈពិសេសមួយ ប៉ុន្តែក៏មិនចង់ចាកចេញពីស្ថានីយ វាក៏ផ្តល់នូវកម្មវិធីរុករកតាមអត្ថបទសម្រាប់អ្នកដើម្បីរកមើលទំព័រនៅក្នុង GitHub ។

"CLI" តំណាងឱ្យ "Cអូម៉ាន Line Iចំណុចប្រទាក់” ។ Terminal នោះ (ឬនៅក្នុង Windows, Command Prompt) គឺជាផ្នែកមួយនៃពួកគេ។ ប្រសិនបើមាន “CLI” បន្ថែមនៅជាប់នឹងឈ្មោះកម្មវិធី (“Git CLI” សម្រាប់អត្ថបទនេះ) វាមានន័យថាកម្មវិធីដំណើរការតាមរយៈស្ថានីយតែប៉ុណ្ណោះ។ ហើយ "Git CLI" នៅក្នុងបរិបទនេះគឺ Git ដែលយើងដឹង។ ដូចជាពាក្យបញ្ជាដែលយើងធ្វើ commits ឬ rebases ជាមួយ។

GUI តំណាងឱ្យ "Gភេរវនិយម Uត្រូវ Interface” ហើយវាជាចំណុចប្រទាក់ដែលយើង “រុករក” នៅលើ។ និយាយបានល្អជាងនេះ បរិស្ថានផ្ទៃតុជាទូទៅគឺជា GUI ។

“សោ API” គឺជាប្រភេទខ្សែអក្សរសម្ងាត់/ឯកសារមួយចំនួនដែលអ្នកប្រើដើម្បីផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវចំពោះសេវាកម្ម។ ប្រយ័ត្នថាវារំលងការផ្ទៀងផ្ទាត់កត្តា 2 ហើយដូច្នេះនៅលើនៅពេលដែលអ្នកផ្ទៀងផ្ទាត់ជាមួយវា។ ដូច្នេះត្រូវប្រាកដថារក្សាពួកគេឱ្យមានសុវត្ថិភាព និងកន្លែងណាដែលមិនទៅដល់ដោយមធ្យោបាយផ្សេងទៀត។

ជាបឋម តើឧបករណ៍នេះជាអ្វី? តើវាគ្រប់គ្រងប្រតិបត្តិការដែលយើងនឹងធ្វើតាមរយៈ Git CLI យ៉ាងដូចម្តេច?

"gh" អាចត្រូវបានចាត់ទុកថាជាប្រភពបើកចំហ (ប្រភព​កូដ) wrapper ប្រើប្រាស់ Git CLI ខ្លួនវា និង GitHub APIs ដើម្បីធ្វើអ្វីៗរួចរាល់។ តាមពិតអ្នកថែមទាំងអាចឆ្លងកាត់ប៉ារ៉ាម៉ែត្រទៅពាក្យបញ្ជា Git ដែលវាប្រើ! ខ្ញុំនឹងចូលទៅក្នុងវានៅពេលក្រោយ។

ការដំឡើងនិងការដំឡើង

សូមចងចាំថាខ្ញុំនឹងឆ្លងកាត់ការដំឡើងដោយប្រើ Termux. ប៉ុន្តែនីតិវិធីគួរតែមានលក្ខណៈដូចគ្នានឹងអ្នកអាចមាននៅលើការចែកចាយដែលមានមូលដ្ឋានលើដេបៀន - អ៊ូប៊ុនទូមានវានៅលើឃ្លាំងផ្លូវការរបស់ពួកគេឧទាហរណ៍។ សម្រាប់វីនដូ អ្នកត្រូវការ CygWin ឬ WSL ខ្ញុំគិតថា។ ¯\_(ツ)_/¯

#តោះដំឡើងឧបករណ៍ជាមុនសិន។ ការដំឡើង Git ផងដែរព្រោះវាជា backend # សម្រាប់ gh ។ $ pkg ដំឡើង git gh -y # បន្ទាប់មកមុនពេលអ្វីៗគ្រប់យ៉ាងយើងត្រូវផ្ទៀងផ្ទាត់។ វានឹងរក្សាទុកសោ API ថ្មី # នៅលើមូលដ្ឋានទិន្នន័យរបស់ឧបករណ៍ ដូច្នេះអ្នកនឹងមិនចាំបាច់ផ្ទៀងផ្ទាត់ # ម្តងទៀតទេ។ ប្រសិនបើអ្នកបានកំណត់ GITHUB_TOKEN រួចហើយ វានឹងមិនដំណើរការទេ ដូច្នេះមិនបានកំណត់ # ជាមុនសិន។ :) $gh auth ចូល

ឥឡូវនេះ មុននឹងយើងបន្តនៅទីនេះ ខ្ញុំត្រូវចង្អុលបង្ហាញចំណុចមួយចំនួន។

  • ដំបូង, កុំជ្រើសរើស "GitHub Enterprise Server" ប្រសិនបើអ្នកមិនមានប្រភេទនៃ GitHub ដែលរៀបចំដោយខ្លួនឯង។
  • ទីពីរ, ប្រើ SSH ជំនួសឱ្យ HTTPS ប្រសិនបើអ្នកបានបន្ថែមសោសាធារណៈរបស់អ្នកនៅលើគណនី GitHub របស់អ្នក។ ក្នុងករណីដែលអ្នកបាត់បង់សោ API យ៉ាងហោចណាស់អ្នកនឹងមិនបាត់បង់សោ SSH របស់អ្នកទេ ដូច្នេះវាអាចជាវិធីសាស្ត្រត្រឡប់ដ៏ល្អផងដែរ។
  • ទីបីជ្រើសរើសការចូលដោយប្រើកម្មវិធីរុករក លុះត្រាតែអ្នកមិនមានសោ API នៅក្នុងដៃ! តាមពិតទៅ វានឹងមិនសមហេតុផលទេដែលមានកូនសោមួយទៀត ខណៈពេលដែលអ្នកមានកូនសោមួយរួចហើយ។

នៅពេលដែលអ្នករៀបចំអ្វីៗរួចរាល់ហើយ ចូរប្រាប់ Git CLI អំពីវា។

$ gh auth setup-git

វានឹងធ្វើឱ្យការកំណត់រចនាសម្ព័ន្ធ Git CLI ចាំបាច់ក្នុងករណីដែលការឆ្លុះបញ្ចាំងរបស់អ្នកចូល និងធ្វើឱ្យអ្នកប្រើ Git ជំនួសឱ្យ GH ។

ពាក្យបញ្ជាមូលដ្ឋានមួយចំនួន

ឥឡូវ​នេះ​អ្នក​បាន​បង្កើត GH ខ្ញុំ​សូម​បង្រៀន​អ្នក​នូវ​ពាក្យ​បញ្ជា​មូលដ្ឋាន​ជា​ច្រើន​ក្នុង​មូលដ្ឋាន​រឿង។

ជាដំបូង សូមនិយាយថាអ្នកចង់បង្កើតសំណើរទាញទៅកាន់ repo manifests ក្នុងតំបន់របស់ខ្ញុំ។ អ្នកចង់បំបែកវាជាមុនសិន។

$ gh repo fork windowz414/platform_manifest ! windowz414/platform_manifest មានរួចហើយ? តើអ្នកចង់ក្លូនសមទេ? បាទ/ចាស ការក្លូនទៅក្នុង 'platform_manifest'... ពីចម្ងាយ៖ ការរាប់បញ្ចូលវត្ថុ៖ 136 រួចរាល់។ ពីចម្ងាយ៖ ការរាប់វត្ថុ៖ 100% (136/136), រួចរាល់។ ពីចម្ងាយ៖ ការបង្ហាប់វត្ថុ៖ 100% (81/81), រួចរាល់។ ពីចម្ងាយ៖ សរុប 136 (ដីសណ្តរ 46) ប្រើឡើងវិញ 89 (ដីសណ្តរ 12) កញ្ចប់ប្រើឡើងវិញ 0 ការទទួលវត្ថុ៖ 100% (136/136) 30.70 KiB | 166.00 KiB/s រួចរាល់។ ការដោះស្រាយ deltas: 100% (46/46), រួចរាល់។ កំពុងអាប់ដេតឡើងពី github.com:windowz414/platform_manifest * [សាខាថ្មី] amyrom/rosie -> upstream/amyrom/rosie * [សាខាថ្មី] aosp-eleven -> upstream/aosp-eleven * [សាខាថ្មី] aosp-ten -> upstream/aosp-ten * [សាខាថ្មី] arrow-11.0 -> upstream/arrow-11.0 * [សាខាថ្មី] cm-14.1 -> upstream/cm-14.1 * [សាខាថ្មី] dot11 -> upstream/dot11 * [សាខាថ្មី ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [សាខាថ្មី] fluid-11 -> upstream/fluid-11 * [សាខាថ្មី] fox_7.1 -> upstream/fox_7.1 * [សាខាថ្មី] hentai-rika -> upstream/hentai-rika * [សាខាថ្មី] ion-pie -> upstream/ion-pie * [សាខាថ្មី] lineage-15.1 -> upstream/lineage-15.1 * [សាខាថ្មី] lineage -17.1 -> upstream/lineage-17.1 * [សាខាថ្មី] lineage-18.1 -> upstream/lineage-18.1 * [សាខាថ្មី] lineage-18.1_teos -> upstream/lineage-18.1_teos * [សាខាថ្មី] lineage-19.0 - > upstream/lineage-19.0 * [សាខាថ្មី] main -> upstream/main * [សាខាថ្មី] mkn-mr1 -> upstream/mkn-mr1 * [សាខាថ្មី] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [សាខាថ្មី] stellar-S1 -> upstream/stellar-S11 * [សាខាថ្មី] teos-n -> upstream/teos-n * [សាខាថ្មី] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Cloned fork

បន្ទាប់មក ចូរនិយាយថា អ្នកមានអង្គការដាច់ដោយឡែកសម្រាប់ការពិសោធន៍របស់អ្នកដែលហៅថា “wz414-labs” ដែលអ្នកមិនទាន់បានភ្ជាប់ទម្រង់ផ្ទាល់ខ្លួនរបស់អ្នកនៅឡើយ ហើយចង់ក្លូននៅទីនោះ បន្ទាប់មកបើកសំណើរទាញតាមរយៈទីនោះជំនួសវិញ។ អ្នកក៏ចង់ក្លូនសាខា “cm-14.1” ដូច្នេះអ្នកនឹងមិនចាំបាច់ធ្វើ git-checkout ទៅវាម្តងទៀតទេ។

$gh repo fork windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ បានបង្កើតសម wz414-labs/platform_manifest ? តើអ្នកចង់ក្លូនសមទេ? បាទ/ចាស ការក្លូនទៅក្នុង 'platform_manifest'... ពីចម្ងាយ៖ ការរាប់បញ្ចូលវត្ថុ៖ 136 រួចរាល់។ ពីចម្ងាយ៖ ការរាប់វត្ថុ៖ 100% (136/136), រួចរាល់។ ពីចម្ងាយ៖ ការបង្ហាប់វត្ថុ៖ 100% (81/81), រួចរាល់។ ពីចម្ងាយ៖ សរុប 136 (ដីសណ្តរ 46) ប្រើឡើងវិញ 89 (ដីសណ្តរ 12) កញ្ចប់ប្រើឡើងវិញ 0 ការទទួលវត្ថុ៖ 100% (136/136) 30.70 KiB | 120.00 KiB/s រួចរាល់។ ការដោះស្រាយ deltas: 100% (46/46), រួចរាល់។ កំពុងអាប់ដេតឡើងពី github.com:windowz414/platform_manifest * [សាខាថ្មី] amyrom/rosie -> upstream/amyrom/rosie * [សាខាថ្មី] aosp-eleven -> upstream/aosp-eleven * [សាខាថ្មី] aosp-ten -> upstream/aosp-ten * [សាខាថ្មី] arrow-11.0 -> upstream/arrow-11.0 * [សាខាថ្មី] cm-14.1 -> upstream/cm-14.1 * [សាខាថ្មី] dot11 -> upstream/dot11 * [សាខាថ្មី ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [សាខាថ្មី] fluid-11 -> upstream/fluid-11 * [សាខាថ្មី] fox_7.1 -> upstream/fox_7.1 * [សាខាថ្មី] hentai-rika -> upstream/hentai-rika * [សាខាថ្មី] ion-pie -> upstream/ion-pie * [សាខាថ្មី] lineage-15.1 -> upstream/lineage-15.1 * [សាខាថ្មី] lineage -17.1 -> upstream/lineage-17.1 * [សាខាថ្មី] lineage-18.1 -> upstream/lineage-18.1 * [សាខាថ្មី] lineage-18.1_teos -> upstream/lineage-18.1_teos * [សាខាថ្មី] lineage-19.0 - > upstream/lineage-19.0 * [សាខាថ្មី] main -> upstream/main * [សាខាថ្មី] mkn-mr1 -> upstream/mkn-mr1 * [សាខាថ្មី] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [សាខាថ្មី] stellar-S1 -> upstream/stellar-S11 * [សាខាថ្មី] teos-n -> upstream/teos-n * [សាខាថ្មី] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Cloned fork

អ្នកឃើញថាខ្ញុំមិនបានប្រើ "-b cm-14.1" ហើយបានប្រើអាគុយម៉ង់វែងជំនួសវិញ។ គិតត្រឹមកាលបរិច្ឆេទនៃអត្ថបទនេះ ថ្ងៃទី 16 ខែកុម្ភៈ ឆ្នាំ 2022 GH មានកំហុសដែលវាមិនឆ្លងកាត់អាគុយម៉ង់ខ្លីៗទៅ Git CLI ឱ្យបានត្រឹមត្រូវ ហើយដូច្នេះវាត្រូវធ្វើជាអាគុយម៉ង់វែងជំនួសវិញ។

នៅពេលវារួចរាល់ អ្នកបានចូលថតជាទៀងទាត់ ធ្វើការផ្លាស់ប្តូររបស់អ្នក ប្តេជ្ញាចិត្តបន្ទាប់មករុញវា ហើយត្រៀមខ្លួនរួចរាល់ដើម្បីធ្វើសំណើទាញ។ សម្រាប់នេះ អ្វីដែលអ្នកត្រូវការគឺសាមញ្ញ

$ gh pr បង្កើត --branch="cm-14.1" កំពុងបង្កើតសំណើរទាញសម្រាប់ wz414-labs:cm-14.1 ទៅជា cm-14.1 ក្នុង windowz414/platform_manifest ? ចំណងជើង៖ ប្តូរទៅ Git-Polycule ? រាងកាយ ? មាន​អ្វី​បន្ទាប់? ដាក់ស្នើ https://github.com/windowz414/platform_manifest/pull/1

ប្រសិនបើអ្នកមិនបន្ថែម “–branch=cm-14.1” ទេ អ្នកនឹងកំពុងបង្កើត PR ឆ្ពោះទៅកាន់ “main” branch ដែលពិតណាស់នឹងបង្កបញ្ហានៅពេលដែលវាមិនត្រូវបានដោះស្រាយត្រឹមត្រូវ។

ហើយឥឡូវនេះ ខ្ញុំត្រូវបញ្ចូល PR នេះ មែនទេ? ដូច្នេះ​ដំបូង​ខ្ញុំ​ក្លូន repo ពិនិត្យ​ចេញ​ទៅ​សាខា​ដែល​បាន​កំណត់ ហើយ​រាយ​បញ្ជី PRs ជា​មុន។

# ក្លូនដំបូង។ $git clone https://github.com/windowz414/platform_manifest ក្លូនចូលទៅក្នុង 'platform_manifest'... ពីចម្ងាយ៖ ការរាប់បញ្ចូលវត្ថុ៖ 136 រួចរាល់។ ពីចម្ងាយ៖ ការរាប់វត្ថុ៖ 100% (136/136), រួចរាល់។ ពីចម្ងាយ៖ ការបង្ហាប់វត្ថុ៖ 100% (81/81), រួចរាល់។ ពីចម្ងាយ៖ សរុប 136 (ដីសណ្តរ 46) ប្រើឡើងវិញ 89 (ដីសណ្តរ 12) កញ្ចប់ប្រើឡើងវិញ 0 ការទទួលវត្ថុ៖ 100% (136/136) 30.70 KiB | 137.00 KiB/s រួចរាល់។ ការដោះស្រាយ deltas: 100% (46/46), រួចរាល់។ # រួចចុះទៅសាខា។ $ git checkout cm-14.1 សាខា 'cm-14.1' រៀបចំដើម្បីតាមដាន 'origin/cm-14.1' ។ បានប្តូរទៅសាខាថ្មី 'cm-14.1' # ហើយឥឡូវនេះកំពុងរាយបញ្ជី PRs ។ បញ្ជី $ gh pr បង្ហាញ 1 នៃ 1 សំណើទាញបើកចំហនៅក្នុង windowz414/platform_manifest #1 teos: ប្តូរទៅ Git-Polycule wz414-labs:cm-14.1

ឥឡូវនេះយើងឃើញថាមាន PR ដើម្បីផ្លាស់ប្តូរពីចម្ងាយទៅ "Git-Polycule" សូមមើលអ្វីដែលបានផ្លាស់ប្តូរជាមួយវា។

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

ហាក់​ដូច​ជា​សន្យា! ដល់ពេលបញ្ចូលគ្នាហើយ!

$ gh pr បញ្ចូល 1 ? តើ​វិធី​ផ្សំ​អ្វី​ដែល​អ្នក​ចង់​ប្រើ? បង្កើតឡើងវិញ និងបញ្ចូលគ្នា? មាន​អ្វី​បន្ទាប់? ដាក់ស្នើ ✓ សំណើទាញឡើងវិញ និងរួមបញ្ចូលគ្នា #1 (teos: Change to Git-Polycule)

ឥឡូវ​នេះ​ខ្ញុំ​បាន​បញ្ចូល​វា​ហើយ អ្នក​អាច​លុប​សម​របស់​អ្នក​បាន។

$gh repo delete --confirm wz414-labs/platform_manifest ✓ លុបឃ្លាំង wz414-labs/platform_manifest

អ្នកឃើញភ្លាមថាបានលុប repo ដោយមិនមានសំណើសុំបញ្ជាក់ទេ ព្រោះខ្ញុំបានឆ្លងកាត់ប៉ារ៉ាម៉ែត្រ "-confirm" នៅទីនោះ។ ប្រសិនបើអ្នកមិនឆ្លងកាត់ទេ អ្នកនឹងទទួលបាន៖

$ gh repo លុប windowsz414/systemd ? វាយ windowz414/systemd ដើម្បីបញ្ជាក់ការលុប៖

ហើយអ្នកនឹងត្រូវវាយឈ្មោះ repo ទាំងមូល។ ខាតពេល…

សេចក្តីសង្ខេប

និយាយឱ្យសាមញ្ញ 'gh' គឺជាកម្មវិធីរុំ Git CLI / Curl សាមញ្ញដែលបង្រួបបង្រួមប្រតិបត្តិការ Git សាមញ្ញនិង GitHub API នៅក្រោមដំបូលតែមួយ។ តើអ្នកប្រើវាដោយរបៀបណា? តើវាមើលទៅសន្យាជាមួយអ្នកដូចដែលវាធ្វើចំពោះខ្ញុំទេ? ទន្ទឹងរង់ចាំស្តាប់ពីអ្នក!

អត្ថបទ​ដែល​ទាក់ទង