Егер сіз GitHub-ды пайдаланып жатсаңыз және мен сияқты командалық жолды GUI-де еш қиындықсыз орындауды қаласаңыз, GitHub-тың «gh» деп аталатын жаңа емес құралын қалай пайдалана бастағанын байқаған боларсыз. Мен оны сынап көруді шештім, өйткені ол перспективалы болып көрінді. Маған бұл өте ұнады – бұл туралы мақала жазғым келгені сонша!
Бастамас бұрын, мен осы мақалада қолданатын бірнеше терминдерді түсіндіруім керек.
«GH» мағынасы «GitHub». Құралдың аты да осы жерден шыққан, сондықтан оны Git-тің өзімен шатастыруға болмайды. Жалпы не істейтінін түсіндіру үшін реполарды жасауға, ашуға, жоюға, шолуға болады; тарту сұрауларын жасау; және тағы басқалар. Функцияны таба алмасаңыз, бірақ сонымен бірге терминалдан кеткіңіз келмесе, ол GitHub беттерін шолу үшін мәтіндік шолғышты да ұсынады.
«CLI» мағынасы «Cвандм LIne Iинтерфейс». Бұл Терминал (немесе Windows жүйесінде, Пәрмен жолы) солардың бірі. Қолданба атауының қасында «CLI» (осы мақала үшін Git CLI) қосылған болса, бұл қолданбаның тек терминал арқылы жұмыс істейтінін білдіреді. Бұл контексте «Git CLI» - бұл біз білетін Git. Пәрмен сияқты, біз міндеттемелер немесе қайта құрулар жасаймыз.
GUI «Gрафикалық UСер Interface» және бұл біз «шарлау» интерфейсі. Жақсырақ айтсақ, жұмыс үстелі ортасы жалпы GUI болып табылады.
«API кілті» - қызметтерге аутентификациялау үшін пайдаланылатын құпия жолдың/файлдың бір түрі. Онымен аутентификация кезінде ол 2 факторлы аутентификацияны айналып өтетінін және т.б. Сондықтан оларды қауіпсіз және басқа жолдармен қол жетпейтін жерде сақтаңыз.
Ең алдымен, бұл қандай құрал? Ол Git CLI арқылы жасайтын операцияларды қалай өңдейді?
«gh» ашық дереккөз ретінде қарастырылуы мүмкін (Source Code) істерді орындау үшін Git CLI өзін және GitHub API интерфейстерін пайдаланатын орауыш. Шын мәнінде, сіз тіпті ол пайдаланатын Git пәрмендеріне параметрлерді бере аласыз! Мен оларға кейінірек кіремін.
Орнату және баптау
пайдалану арқылы орнату арқылы өтетінімді есте сақтаңыз Termux. Бірақ процедура Debian негізіндегі дистрибутивтегідей болуы керек - мысалы, Ubuntu оның ресми реполарында бар. Windows үшін, менің ойымша, сізге CygWin немесе WSL қажет. ¯\_(ツ)_/¯
# Алдымен құралды орнатайық. Сондай-ақ Git-ті орнату, себебі ол gh үшін # сервері. $ pkg install git gh -y # Содан кейін бәрінен бұрын аутентификация қажет. Бұл құралдың дерекқорында # жаңа API кілтін сақтайды, осылайша # қайта аутентификациялау қажет болмайды. GITHUB_TOKEN параметрін әлдеқашан орнатқан болсаңыз, бұл алдымен # оны орнатпастан жұмыс істемейді. :) $ gh аутентификациялық кіру
Енді, осыны жалғастырмас бұрын, мен бірнеше нәрсені атап өтуім керек.
- Біріншіден, «GitHub Enterprise Server» таңдамаңыз егер сізде өзін-өзі басқаратын GitHub болмаса.
- Екіншіден, GitHub тіркелгіңізге ашық кілт қосылған болса, HTTPS орнына SSH пайдаланыңыз. API кілтін жоғалтқан жағдайда, сіз кем дегенде SSH кілтін жоғалтпайсыз, сондықтан ол жақсы қалпына келтіру әдісі болуы мүмкін.
- Үшіншіден, браузер арқылы кіруді таңдаңыз Қолыңызда API кілті болмаса ғана! Шынында да, сізде біреу бар болса, басқа кілттің болуы мағынасыз болар еді.
Заттарды орнатуды аяқтағаннан кейін, бұл туралы Git CLI-ге айтайық.
$ gh auth setup-git
Бұл сіздің рефлекстеріңіз еніп, GH орнына Git пайдалануға мәжбүр еткен жағдайда қажетті Git CLI конфигурацияларын жасайды.
Кейбір негізгі командалар
Енді сіз GH орнатқан болсаңыз, сізге әңгіме негізінде бірнеше негізгі пәрмендерді үйретуге рұқсат етіңіз.
Ең алдымен, менің жергілікті манифест репосына тарту сұрауын жасағыңыз келеді делік. Сіз алдымен оны айырғыңыз келеді.
$ gh репо шанышқысы 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 КБ | 166.00 КБ/с, орындалды. Дельталарды шешу: 100% (46/46), орындалды. Жоғары ағынды жаңарту github.com:windowz414/platform_manifest сайтынан * [жаңа филиал] amyrom/rosie -> upstream/amyrom/rosie * [жаңа филиал] aosp-bir -> upstream/aosp-eleven * [жаңа филиал] aosp-ten -> upstream/aosp-ten * [жаңа тармақ] arrow-11.0 -> upstream/arrow-11.0 * [жаңа тармақ] см-14.1 -> upstream/cm-14.1 * [жаңа тармақ] dot11 -> upstream/dot11 * [жаңа тармақ ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [жаңа тармақ] сұйықтық-11 -> жоғары ағын/флюид-11 * [жаңа тармақ] fox_7.1 -> жоғары ағын/түлкі_7.1 * [жаңа тармақ] hentai-rika -> жоғары ағын/hentai-rika * [жаңа тармақ] ион-пие -> жоғары ағын/ион-пие * [жаңа тармақ] lineage-15.1 -> жоғары ағын/хентай-рика-15.1 * [жаңа тармақ] линия -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 * [жаңа тармақ] негізгі -> жоғары ағын/негізгі * [жаңа филиал] mkn-mr1 -> upstream/mkn-mr1 * [жаңа филиал] revengeos-r11.0 -> жоғары ағын/revengeos-r11.0. 1 * [жаңа тармақ] stellar-S1 -> upstream/stellar-S11 * [жаңа тармақ] teos-n -> upstream/teos-n * [жаңа филиал] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Клондалған шанышқы
Содан кейін сізде «wz414-labs» деп аталатын тәжірибелеріңіз үшін жеке ұйымыңыз бар делік, сіз әлі жеке профиліңізді ашпағансыз және сол жерде клондағыңыз келеді, содан кейін оның орнына тарту сұрауын ашыңыз. Сіз сондай-ақ «cm-14.1» тармағын клондағыңыз келеді, сондықтан оған қайтадан git-checkout жасаудың қажеті жоқ.
$ gh репо шанышқысы 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 КБ | 120.00 КБ/с, орындалды. Дельталарды шешу: 100% (46/46), орындалды. Жоғары ағынды жаңарту github.com:windowz414/platform_manifest сайтынан * [жаңа филиал] amyrom/rosie -> upstream/amyrom/rosie * [жаңа филиал] aosp-bir -> upstream/aosp-eleven * [жаңа филиал] aosp-ten -> upstream/aosp-ten * [жаңа тармақ] arrow-11.0 -> upstream/arrow-11.0 * [жаңа тармақ] см-14.1 -> upstream/cm-14.1 * [жаңа тармақ] dot11 -> upstream/dot11 * [жаңа тармақ ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [жаңа тармақ] сұйықтық-11 -> жоғары ағын/флюид-11 * [жаңа тармақ] fox_7.1 -> жоғары ағын/түлкі_7.1 * [жаңа тармақ] hentai-rika -> жоғары ағын/hentai-rika * [жаңа тармақ] ион-пие -> жоғары ағын/ион-пие * [жаңа тармақ] lineage-15.1 -> жоғары ағын/хентай-рика-15.1 * [жаңа тармақ] линия -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 * [жаңа тармақ] негізгі -> жоғары ағын/негізгі * [жаңа филиал] mkn-mr1 -> upstream/mkn-mr1 * [жаңа филиал] revengeos-r11.0 -> жоғары ағын/revengeos-r11.0. 1 * [жаңа тармақ] stellar-S1 -> upstream/stellar-S11 * [жаңа тармақ] teos-n -> upstream/teos-n * [жаңа тармақ] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ Клондалған шанышқы
Көрдіңіз бе, мен «-b cm-14.1» қолданбадым және оның орнына ұзақ дәлелді жасадым. Осы мақаланың күні, 16 жылдың 2022 ақпанындағы жағдай бойынша, GH-де Git CLI-ге қысқа аргументтерді дұрыс жібермейтін қате бар, сондықтан оның орнына ұзақ аргументтер ретінде жасалуы керек.
Бұл аяқталғаннан кейін сіз қалтаға жүйелі түрде кірдіңіз, өзгертулеріңізді орындадыңыз, орындадыңыз, содан кейін оны жібердіңіз және тарту сұрауын орындауға дайынсыз. Бұл үшін сізге қарапайым нәрсе қажет
$ gh pr create --branch="cm-14.1" wz414-labs:cm-14.1 үшін windowz14.1/platform_manifest ішінде cm-414 ішіне тарту сұрауын жасау? Тақырып тақырыбы: Git-Polycule-ге өзгерту керек пе? Дене ? Келесі не? https://github.com/windowz414/platform_manifest/pull/1 жіберу
Егер сіз “–branch=cm-14.1” тіркесін қоспасаңыз, сіз “негізгі” тармаққа қатысты PR жасайсыз, бұл, әрине, дұрыс өңделмегенде қиындықтар туғызады.
Енді мен бұл PR-ды біріктіруім керек, солай ма? Сондықтан мен алдымен репо клондап, тағайындалған филиалға есеп айырысамын және алдымен PR тізімін жасаймын.
# Алдымен клондау. $ 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 КБ | 137.00 КБ/с, орындалды. Дельталарды шешу: 100% (46/46), орындалды. # Содан кейін филиалға барыңыз. $ git checkout см-14.1 тармағы 'cm-14.1' 'шығу/см-14.1' бақылау үшін орнатылған. Жаңа филиалға ауысты 'cm-14.1' # Ал қазір тізімде PR. $ gh pr тізімі windowz1/platform_manifest №1 файлында ашық тарту сұрауының 414-ін көрсету: Git-Polycule wz1-labs:cm-414-ге өзгерту
Енді біз қашықтан басқару құралын «Git-Polycule» деп өзгертуге болатын PR бар екенін көріп, онымен не өзгергенін көрейік.
$ gh pr айырмашылық 1 айырмашылық --git a/teos.xml b/teos.xml индексі b145fc0..3aadeb6 100644 --- a/teos.xml +++ b/teos.xml @@ -2,7 +2,7, 414 @@
Болашағы бар сияқты! Біріктіру уақыты!
$ gh pr біріктіру 1? Қандай біріктіру әдісін пайдаланғыңыз келеді? Қайта құру және біріктіру керек пе? Келесі не? Жіберу ✓ Қайта негізделген және біріктірілген тарту сұрауы №1 (teos: Git-Polycule түріне өзгерту)
Енді мен оны біріктірдім, сіз шанышқыңызды жоя аласыз.
$ gh репо жою --confirm wz414-labs/platform_manifest ✓ Жойылған репозиторий wz414-labs/platform_manifest
Сіз «–растау» параметрін жібергендіктен, растау сұрауынсыз репоны бірден жойғанын көресіз. Егер сіз оны өткізбесеңіз, сіз мынаны аласыз:
$ gh репо жою windowz414/systemd ? Жоюды растау үшін windowz414/systemd теріңіз:
Сізге бүкіл репо атауын теру керек. Уақытты босқа кетіру…
қысқаша мазмұндама
Қарапайым тілмен айтқанда, `gh` - қарапайым Git операциялары мен GitHub API заттарын бір шатырдың астына біріктіретін өте жеңілдетілген Git CLI/Curl орауыш. Сіз оны қалай пайдаланасыз? Бұл маған ұқсайтындай, сізге перспективалы болып көріне ме? Сізден хабар күтеміз!