Shanraq.org Shanraq.org
GitHub: көрінетін код
IT

Go тілі: нөлден өз блогыңызға дейін 17-сабақ (барлығы 50)

GitHub: көрінетін код

Go курсының он жетінші сабағы. GitHub — сақтық көшірме емес, басқаларға көрінетін сол тарихтың өзі. Аккаунт және алғашқы репозиторий, git remote мен git push, ондағы құпиясөзді неге қабылдамайды және оның орнына не келді, README — адам ең алдымен оқитын нәрсе, және ешқашан жарияламайтын дүниелер.

Не үшін керек

Тарих сізде бар — ол компьютеріңіздегі .git қалтасында жатыр. Компьютер жоғалса, ол да жоғалады.

Бірақ желідегі көшірме тек сол үшін керек емес. Кодыңыз көрінетін болады. Жұмыс беруші «мен курстан өттім» деген сөзге сенбейді; ол сіздің GitHub-ыңызды ашады да, бір минутта не жазғаныңызды, қаншалықты жиі жазғаныңызды және түзетулеріңізді қаншалықты түсінікті түсіндіргеніңізді көреді. Әзірлеушінің түйіндемесі деген осы — өткен курстардың тізімі емес, түсінікті хабарлары бар қырық жазба.

Елестетіп көріңіз. Сейф емес, витрина. Сейф жасырады да, сақтайды. Витрина да сақтайды — бірақ оны көшеден көреді, сондықтан оған бірдеңе қояды.

Бірден тұтас

Аккаунт ашуға болмаса не ашқыңыз келмесе — осы абзацты аттап кетіңіз. GitHub пайдаланушының жасы 13-тен кем болмауын талап етеді, ал еліңіздің заңы одан үлкенін талап етсе — үлкенін; бұл оның шарттарында жазылған, әрі оны сақтау — сіздің міндетіңіз. Сабақты аккаунтсыз түгел өтуге болады: төменде «Аккаунтсыз» бөлімі бар, онда бір де бір пәрмен өзгермейді.

github.com сайтында аккаунт ашыңыз — пошта, ат, құпиясөз. Атты асықпай таңдаңыз: ол жобаларыңыздың мекенжайына да, түйіндемеге де түседі, сондықтан kotik2007 емес, daulet-b дұрысырақ.

Одан кейін — жаңа репозиторий: New батырмасы, аты go-oqu, ашық, әрі README, лицензия мен .gitignore қоспаңыз: файлдарыңыз онсыз да бар, ал бос дайындама кейін сіздің тарихыңызбен қақтығысады.

GitHub бірнеше пәрмен көрсетеді. Керегі мыналар:

git remote add origin https://github.com/СІЗДІҢ-АТЫҢЫЗ/go-oqu.git
git branch -M main
git push -u origin main

Репозиторий бетін жаңартыңыз — онда файлдарыңыз бен бүкіл тарихыңыз тұр. Әрі қарай әр жазбадан кейін бір пәрмен жетеді:

git push

Сайттағы батырмалар уақыт өте орын ауыстырады, ал бұл пәрмендер жылдар бойы өзгерген жоқ. Беттің көрінісі сипатталғаннан өзгеше болса — батырманы емес, git remote add жолын іздеңіз, GitHub оны бос репозиторийде әрқашан көрсетеді.

Талдау

GitHub деген не және ол не емес

Git — компьютеріңіздегі бағдарлама. GitHub — репозиторийдің көшірмесін сақтайтын және оны адамдарға көрсететін сайт. Бұл екі бөлек нәрсе, әрі Git GitHub-сыз да тамаша жұмыс істейді.

Сондықтан «GitHub-қа жариялау» — «сақтау» деген сөз емес. Сақтайтын — git commit, сізде. git push тек сақталып қойғанды жібереді.

remote, push және pull

origin — желідегі репозиторийіңіздің мекенжайына берілген ат. Ат шартты, жай ғана солай қабылданған.

git push жазбаларыңызды сонда жібереді. git pull сізде жоғын сол жақтан алып келеді — екі компьютерде жұмыс істегенде немесе басқа біреу түзету енгізгенде керек болады.

Бірінші пәрмендегі -u жалаушасы: «бұл тармақ сонда жіберілетінін есте сақта» дейді. Одан кейін жалаң git push жеткілікті.

Аккаунтсыз: көрші қалтадағы өз «серверің»

Git «GitHub» деген сөзді білмейді. Ол үшін қашықтағы репозиторий — бұл мекенжай, ал мекенжай кәдімгі қалта бола алады: дискідегі, флешкадағы, бұлттағы.

git init --bare -b main ~/blog.git

--bare дегеніміз «жұмыс файлдары жоқ репозиторий»: онда тек тарих. Серверде осындайы жатады — оған жібереді, одан клондайды, бірақ онда жұмыс істемейді.

-b main мұнда әшекей емес. Онсыз жалаң репозиторийде әдепкі master тармағы қалады, ал сіз main жібересіз. Жіберуде қате болмайды, ал клон кейін былай дейді:

warning: remote HEAD refers to nonexistent ref, unable to checkout

әрі бос қалта келеді. Мұны бірден түсіну қиын, сондықтан тармақ атын бірден береді.

Әрі қарай — сол пәрмендер, сөзбе-сөз:

git remote add origin ~/blog.git
git push -u origin main

Тарихтың шынымен кеткенін басқа адам қалай тексерсе, солай — клондап тексеруге болады:

git clone ~/blog.git ~/blog-copy
ls ~/blog-copy
main.go

Флешкамен де бәрі сол, тек жол өзгереді: Mac-та /Volumes/USB/blog.git, Windows-та E:/blog.git. Ал мінеки бұл — нағыз сақтық көшірме: ол сіз жұмыс істеп отырған дискіде емес.

Былай істей алмайтын нәрсе: кодқа басқа адамға сілтеме беру және одан түзету қабылдау. GitHub-ты сол үшін ашады — бірақ ашуға болатын кезде.

main тармағы және -M не үшін керек

Сіз git branch -M main деп тердіңіз де, бұл не деп сұрамадыңыз. Орныңызға сұрайық.

Тармақ — жазбалар желісіне берілген ат. Жобада олар бірнешеу болуы мүмкін: негізгісі және, мысалы, тәуекелді түзетуді сынап көретіні. Әзірге сізге біреуі жетеді.

Бұрын негізгі тармақты әдепкіде master деп атайтын, енді — main, әрі GitHub дәл осы атты күтеді. -M пәрмені ағымдағы тармағыңыздың аты басқа болса, оны main деп өзгертеді. Аты онсыз да main болса — пәрмен ештеңе істемейді.

Ондағы құпиясөзді енді қабылдамайды

Сайттың құпиясөзімен кіруге тырыссаңыз, GitHub бас тартады — 2021 жылдан бері солай. Құпиясөздің орнына екі жол бар, кез келгенін таңдаңыз:

Токен. GitHub баптауларында ұзын жол — жеке қатынау токені — жасалады да, алғашқы push кезінде құпиясөздің орнына енгізіледі. Жүйе оны кілттер қоймасында есте сақтайды.

SSH-кілт. Бір рет ssh-keygen -t ed25519 -C "поштаңыз@пошта" орындайсыз, жасалған ~/.ssh/id_ed25519.pub файлын ашып, ішіндегіні көшіресіз де, GitHub баптауларындағы SSH keys бөліміне қосасыз. Одан кейін репозиторий мекенжайын git@github.com:аты/жоба.git түрінде алады, ал құпиясөзді енді ешқашан сұрамайды.

Елестетіп көріңіз. Бүкіл пәтердің кілтінің орнына бір есікке арналған рұқсатнама. Құпиясөз бүкіл аккаунтыңызды ашады. Токенді тек керегіне беруге және қалғанын өзгертпей кері қайтарып алуға болады.

Жаңадан бастаған адамға токеннен бастау оңай, ал SSH-ті оны теру жалықтырғанда баптайды.

README — адам ең алдымен оқитын нәрсе

README.md файлын GitHub репозиторийдің басты бетінде бірден көрсетеді. README-сіз репозиторий бөтен файлдардың қоймасындай көрінеді; README-і барын жұмыс деп қабылдайды.

Үш абзац жеткілікті:

# go-oqu

«Go: нөлден өз блогыңа дейін» курсы сабақтарының менің шешімдерім.

## Қалай іске қосу керек

    cd sabaq-05
    go run .

## Не істелді

- 1–15 сабақ: тіл
- blog/ қалтасында қадамдап жазылған блог

.md — бұл Markdown, осы сабақтар терілген сол қарапайым белгілеу тілі: # — тақырып, - — тізім.

Күнде не істеу керек

Ырғағы мынадай: жұмыс істедіңіз — git add ., git commit -m "…", git push. Үш пәрмен, он секунд.

Басқа компьютерге отырдыңыз — алдымен git pull, содан кейін жұмыс. Ұмытсаңыз — Git жіберуден бас тартады да, алдымен бөтен түзетулерді алу керегін айтады; бұл ақау емес, қорғаныс.

Ешқашан жарияламайтын нәрсе

Ашық репозиторийді бәрі көреді, соның ішінде бөтен кодтан құпиясөз іздеп тәулік бойы жүретін бағдарламалар да. Олар минут ішінде табады.

Сондықтан: құпиясөз де, кілт те, .env файлдары да болмасын — олардың орны өткен сабақта айтылған .gitignore ішінде. Құпиясөз тарихқа түсіп кетсе, файлды ғана емес, құпиясөздің өзін ауыстыру керек: жазба өшірілгеннен кейін де тарихта қалады.

Елестетіп көріңіз. Шеберхана есігіндегі маңдайша. Іші тәртіпті ме, тәртіпсіз бе — сырттан көрінгеніне қарап баға береді. Ал үйдің кілтін маңдайшаға жазбайды.

Сабақ картасы

Сабақ картасы: бір тарих екі жерде, push жібереді, pull әкеледі

Өз сөзіңізбен айтыңыз

Қарамай, дауыстап немесе қағазға жазып жауап беріңіз. Жауаптары — сабақтың соңында.

  1. git commit git push-тан несімен өзгеше?
  2. GitHub неге құпиясөзді қабылдамайды және оның орнына не бар?
  3. Код онсыз да көрініп тұрса, ашық репозиторийге README не үшін керек?

Тапсырма

Міндетті — аккаунтсыз нұсқа. Көрші қалтада жалаң репозиторий жасаңыз (git init --bare -b main ~/blog.git), тарихты сонда жіберіңіз, оны басқа қалтаға клондап, файлдар орнында екеніне көз жеткізіңіз. Үш бөліктен тұратын README.md жазыңыз — бұл не, қалай іске қосу, не істелген — әрі бөлек жазба етіп жіберіңіз.

Міндетті — аккаунтпен нұсқа. Сабақтарыңыз жатқан репозиторийді GitHub-қа жариялаңыз: аккаунт, жаңа ашық репозиторий, git remote add origin …, git push -u origin main. Үш бөліктен тұратын README.md жазыңыз — бұл не, қалай іске қосады, не істелді — де, оны бөлек жазбамен жіберіңіз. Репозиторий мекенжайын браузерден ашып, README басты бетте көрінетініне көз жеткізіңіз.

Қалауыңызша.

  • SSH-кілтті баптап, репозиторий мекенжайын git remote set-url origin git@github.com:… пәрменімен ауыстырыңыз.
  • Жазба жасап, оны жіберіңіз де, GitHub-тағы коммиттер қойындысынан хабарыңыздың сырттан қалай көрінетінін қараңыз.
  • GitHub-тан Go-ның өз бастапқы кодын табыңыз: github.com/golang/go. Олардың жазбаларға жазған хабарлары қалай көрінетінін қараңыз.

Блогта қайда тұрады

Курс уәдесінің екінші жартысы осы жерден басталады. Жазатын блогыңыз компьютеріңізде толық жұмыс істейді — ал оны әлемге көрсеткіңіз келсе, тегін хостингтер кодты тікелей GitHub-тан ала алады: репозиторийді қосасыз да, әр git push сайын сайт өзі жаңарады.

Төлеу тек өз домен атыңызға керек. Қалғанының бәрі — код та, тарих та, орналастыру да — тегін.

Жауаптар

Жауаптарды көрсету
  1. git commit күйді компьютеріңіздегі тарихқа жазады — сақтау деген осы. git push жазылып қойғанды GitHub-тағы репозиторий көшірмесіне жібереді. commit болмаса, жіберетін ештеңе жоқ.
  2. Сайттың құпиясөзі бүкіл аккаунтты ашады, ал GitHub оны кодпен жұмыс істеу үшін 2021 жылы қабылдамайтын болды. Оның орнына — керегіне беріп, кері қайтарып алуға болатын жеке токен, немесе баптағаннан кейін құпиясөзді мүлде сұрамайтын SSH-кілт.
  3. Себебі код қалай істелгенін көрсетеді, ал README одан бұрын туатын сұрақтарға жауап береді: бұл не, қалай іске қосады, мұнда не дайын. Адам оны бірінші оқиды да, әрі қарай қарауды содан шешеді.

Дереккөздер

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Тапсырманы тексеру

Алдымен VS Code-та шешіп, іске қосыңыз — редактор қатені сол жерде көрсетеді. Дайын шешімді осында қойыңыз. Тексеретін — модель: ол қатені атап көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.