Kas yra GitHub? Versijų valdymas nekūrėjams
GitHub yra svetainė, kurioje saugomas programinės įrangos projektų kodas kartu su visa jo istorija. Todėl galite matyti kiekvieną pakeitimą, atšaukti klaidas ir dirbti prie to paties projekto kartu su kitais žmonėmis. Ji pagrįsta Git – nemokama programa, kuri laikui bėgant įrašo projekto failų momentines kopijas. Git yra įrankis, kuris saugo istoriją; GitHub yra internetinė vieta, kurioje ta istorija bendrinama, atsarginiai kopijuojama ir aptariama.
Jei kuriate su DI, GitHub daugiausia reikalingas dviem dalykams: turėti savo kodo kopiją už įrankio, kuriuo jį sukūrėte, ribų, ir perduoti ją kūrėjui formatu, kuriuo jis jau dirba.
Kodėl tai svarbu kuriant su DI
DI programėlių kūrimo įrankis rašo ir keičia daug kodo labai greitai, o ne kiekvienas pakeitimas yra patobulinimas. Versijų valdymas padeda tai saugiai kontroliuoti.
- Atšaukite be baimės. Kiekvienas išsaugotas pakeitimas yra momentinė kopija. Jei DI ką nors sugadina, grįžtate prie paskutinės tinkamos versijos.
- Nuosavybė. Kodas jūsų GitHub paskyroje lieka jūsų, jei pakeisite įrankį, nustosite mokėti už jį arba norėsite antros nuomonės.
- Darbas su kūrėjais. Beveik kiekvienas kūrėjas kasdien naudoja Git. Saugykla leidžia jiems peržiūrėti, ką parašė DI, pataisyti ir grąžinti pakeitimus.
- Paleidimas kitur. Daugelis talpinimo platformų gali paleisti programėlę tiesiai iš GitHub saugyklos.
Kasdienė analogija: keitimų sekimas ir bendras diskas
Įsivaizduokite dokumentą su įjungtu keitimų sekimu, laikomą bendrame diske.
- Git yra keitimų sekimas: kiekviena redakcija įrašoma su tuo, kas ją padarė, kada ir kodėl, ir galite grįžti prie bet kurios versijos.
- GitHub yra bendras diskas: dokumentas laikomas internete, kiti gali gauti kopiją, ir yra vieta komentarams bei patvirtinimams.
- Šaka (branch) – tai lyg išsaugota kopija pavadinimu „juodraštis – nauja kainų dalis“, kad galėtumėte eksperimentuoti nepaliesdami versijos, kuria visi remiasi. Jei eksperimentas pavyksta, jį sujungiate atgal.
Skirtumas nuo dokumento – apimtis. Programėlė yra šimtai failų, o Git seka visus kartu, todėl momentinė kopija yra visos projekto būsenos vaizdas vienu metu.
Git ir GitHub terminai, kuriuos sutiksite
| Terminas | Paprasta reikšmė |
|---|---|
| Saugykla (repository, repo) | Projekto aplankas su visa istorija |
| Commit | Išsaugota pakeitimų momentinė kopija su trumpu aprašymu |
| Branch (šaka) | Atskira darbo linija, kad eksperimentai netrikdytų pagrindinės versijos |
| main | Įprastas pagrindinės šakos pavadinimas – versija, kuri paleidžiama |
| Merge (sujungimas) | Šakos pakeitimų perkėlimas į kitą šaką |
| Merge conflict (konfliktas) | Du pakeitimai palietė tas pačias eilutes; kažkas turi pasirinkti, ką palikti |
| Clone (klonavimas) | Pilnos saugyklos kopijos atsisiuntimas su istorija |
| Push / pull | Jūsų commit išsiuntimas į GitHub / kitų commit atsisiuntimas |
| Pull request (PR) | GitHub puslapis, siūlantis sujungti šaką; čia žmonės peržiūri ir aptaria pakeitimus |
| Fork (šakojimas) | Jūsų asmeninė kopija kito žmogaus saugyklos GitHub |
| Issue (problema) | GitHub užduotis ar klaidos pranešimas, susietas su saugykla |
.gitignore | Failų, kurių Git niekada neturi įrašinėti, sąrašas, pavyzdžiui, .env paslaptys ir atsisiųsti priklausomybių failai |
| GitHub Actions | GitHub automatizacija, pavyzdžiui, testai kiekvienam pull request |
Verta pabrėžti du dalykus. Pirma, Git istorija pagal paskirtį yra nuolatinė: jei slaptažodis buvo įkeltas į saugyklą, jo ištrynimas vėlesniame commit jo neiškelia iš istorijos. Antra, commit yra tiek naudingas, kiek naudingas jo aprašymas. „Ištaisyta dvigubo rezervavimo klaida, kai du žmonės rezervuoja vienu metu“ vėliau padeda; „atnaujinta“ – ne.
Darbo pavyzdys: DI sukurtos programėlės perdavimas laisvai samdomam kūrėjui
Su DI programėlių kūrimo įrankiu sukūrėte kliento portalą. Jis veikia, bet norite, kad laisvai samdomas kūrėjas pridėtų sudėtingą integraciją su jūsų apskaitos programa.
- Prijunkite projektą prie naujos privačios GitHub saugyklos ir įkelkite. Saugykloje dabar yra kodas ir jo istorija.
- Patikrinkite, kas joje yra. Atidarykite saugyklą GitHub. Neturėtų būti
.envfailo ir API raktų kode. Paslaptys laikomos jūsų platformos nustatymuose ir, jei reikia, perduodamos kūrėjui atskirai – žr. aplinkos kintamuosius ir paslaptis. - Pakvieskite kūrėją kaip bendradarbį tik į tą vieną saugyklą.
- Jis dirba šakoje, pavadintoje panašiai kaip
accounting-sync, daro commit po kiekvieno žingsnio ir atidaro pull request, kai baigia. - Peržiūrite pull request. Net nemokėdami skaityti kodo, galite perskaityti aprašymą, pamatyti, kurie failai pakeisti, ir užduoti klausimus komentaruose.
- Sujunkite, kai būsite patenkinti, tada atsisiųskite pakeitimus į savo kūrimo įrankį, kad jūs ir DI tęstumėte nuo naujos versijos.
Tuo tarpu galite matyti tiksliai, kas pasikeitė, ir prireikus tai atšaukti. Tai ir yra versijų valdymo nauda vienu darbo srautu. Jei dar svarstote, ar apskritai pritraukti kūrėją, žr. samdyti kūrėją ar kurti su DI.
Dažnos klaidos ir klaidingi įsitikinimai
- „GitHub ir Git yra tas pats.“ Git veikia be GitHub; yra ir kitų paslaugų, pavyzdžiui, GitLab ir Bitbucket, kurios taip pat talpina Git saugyklas.
- „GitHub paleis mano programėlę.“ GitHub saugo kodą. Programėlės paleidimas visuomenei yra svetainių talpinimas – atskira paslauga (nors kai kurie talpintojai diegia iš GitHub).
- Paslapčių įkėlimas. Pati dažniausia ir pati žalingiausia klaida. Naudokite
.gitignore.envfailams, o kiekvieną raktą, kuris kada nors buvo įkeltas, pakeiskite. - Tik viena šaka ir jokių žinučių. Tinka vieniems eksperimentams, bet suteikite commit aiškias žinutes ir naudokite šakas bet kam rizikingam.
- Redagavimas dviejose vietose vienu metu. Jei keičiate kodą GitHub ir DI kūrimo įrankyje be atsisiuntimo tarp jų, atsiranda konfliktų. Vienu metu redaguokite tik vienoje vietoje ir prieš keisdami sinchronizuokite.
- Manymas, kad privati saugykla yra visko atsarga. Ji saugo kodą, o ne jūsų duomenų bazės turinį ar įkeltus failus. Jiems reikalingos atskiros atsarginės kopijos.
Ko prašyti savo DI kūrimo įrankio
- „Pridėk
.gitignore, kuris neįtrauktų.env, priklausomybių aplankų ir kompiliavimo rezultatų.“ - „Parašyk README, kuris paaiškintų, kaip įdiegti, kokių aplinkos kintamųjų reikia (tik pavadinimai) ir kaip paleisti programėlę.“
- „Pridėk
.env.examplesu visais kintamųjų pavadinimais ir be tikrųjų reikšmių.“ - „Kiekvienam pakeitimui naudok aiškias, aprašomąsias commit žinutes.“
Šie keturi prašymai sukuria saugyklą, kurią kūrėjas gali perimti per kelias minutes. Jei norite perkelti programėlę į savo serverius, žr. kaip eksportuoti ir talpinti DI sukurtą programėlę savarankiškai, o jei reikia ją sustiprinti prieš tikrus naudotojus – kaip DI prototipą perkelti į gamybą.
GitHub ir Mythex
Mythex istoriją saugo jums kiekviename plane: po kiekvieno sėkmingo agento veiksmo jis įrašo kontrolinį tašką – Git momentinę kopiją, prie kurios galite grįžti. Pro plane galite prijungti GitHub ir įkelti ar atsisiųsti projektą iš savo saugyklos arba atsisiųsti visą projektą kaip archyvą; paslaptys ir įdiegtos priklausomybės eksportuose praleidžiamos. Čia GitHub skirtas kodui sinchronizuoti, o ne prisijungimui prie Mythex. Žr. GitHub, eksportas ir importas dokumentacijoje ir kainų puslapį, kad sužinotumėte, ką įtraukia kiekvienas planas.
Klausimai
Kuo skiriasi Git ir GitHub?
Git yra nemokama programa, kuri įrašo projekto failų istoriją bet kuriame kompiuteryje. GitHub yra svetainė, priklausanti Microsoft. Ji talpina Git saugyklas internete ir prideda bendradarbiavimo įrankius, pavyzdžiui, pull request, problemas (issues) ir automatizavimą.
Ar man reikia GitHub, kad kurčiau programėlę su DI?
Ne. Daugelis DI programėlių kūrimo įrankių istoriją saugo patys, pačiame produkte. GitHub tampa naudingas, kai norite turėti savo kodo kopiją, norite dirbti su kūrėju arba planuojate programėlę paleisti kitur.
Ar GitHub nemokamas?
GitHub turi nemokamą planą, į kurį įeina viešos ir privačios saugyklos. Jo pakanka daugumai asmenų ir mažų komandų. Mokami planai prideda komandų valdymą ir papildomų funkcijų; dabartinę informaciją rasite GitHub kainų puslapyje.
Ar mano kodas GitHub viešas?
Tik tuo atveju, jei saugyklą padarysite viešą. Privačias saugyklas mato tik jūs ir asmenys, kuriuos pakviečiate. Net privačioje saugykloje niekada nekelkite slaptažodžių ar API raktų.