ប្រសិនបើអ្នកបានប្រើ 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 នៅក្រោមដំបូលតែមួយ។ តើអ្នកប្រើវាដោយរបៀបណា? តើវាមើលទៅសន្យាជាមួយអ្នកដូចដែលវាធ្វើចំពោះខ្ញុំទេ? ទន្ទឹងរង់ចាំស្តាប់ពីអ្នក!