Kas čia per žvėris tas Git?
Jei tik pradedate programuoti arba jau kurį laiką rašote kodą, bet vis dar išsaugote failus pavadindami juos projektas_final_v2_TIKRAI_FINAL.zip – šis straipsnis skirtas jums. Git yra versijų kontrolės sistema, kuri iš esmės keičia tai, kaip dirbate su kodu. Ne tik jūs vienas – visa pasaulio programuotojų bendruomenė.
Paprastai tariant, Git seka kiekvieną jūsų kodo pakeitimą. Kiekvieną kartą, kai sakote „gerai, čia veikia, išsaugosiu šią būseną” – Git tai prisimena. Galite grįžti atgal į bet kurį tašką, palyginti, kas pasikeitė, ir suprasti, kodėl kažkas nustojo veikti. Tai tarsi laiko mašina jūsų projektui.
Git sukūrė Linus Torvalds – tas pats žmogus, kuris sukūrė Linux branduolį. Jis sukūrė Git 2005 metais, nes nepatiko jokia kita tuo metu egzistavusi sistema. Tipiškas programuotojų sprendimas: nepatinka esami įrankiai – sukurk savą.
GitHub – ne tas pats kas Git
Čia daugelis naujokų susipainioją. Git ir GitHub – du skirtingi dalykai, nors pavadinimai panašūs. Git yra programa, kuri veikia jūsų kompiuteryje. GitHub yra svetainė, kuri leidžia laikyti jūsų Git saugyklas debesyje ir bendradarbiauti su kitais žmonėmis.
Analogija: Git yra kaip Word dokumentų redaktorius, o GitHub – kaip Google Drive. Vienas veikia lokaliai, kitas – internete. Galite naudoti Git be GitHub, bet GitHub be Git – ne.
Be GitHub egzistuoja ir alternatyvos – GitLab, Bitbucket, Gitea. Tačiau GitHub yra labiausiai paplitęs, turi didžiausią bendruomenę ir daugumą atvirojo kodo projektų. Jei pradedate, pradėkite nuo GitHub – neklysit.
GitHub šiandien priklauso Microsoft (įsigijo 2018 metais už 7,5 milijardo dolerių), bet tai mažai ką keičia kasdieniam naudojimui. Nemokama paskyra leidžia turėti neribotą kiekį viešų ir privačių saugyklų.
Diegimas ir pirminė konfigūracija
Prieš pradedant, reikia įdiegti Git. Tai paprasčiau nei atrodo:
- Windows: Atsisiųskite iš
git-scm.comir paleiskite diegimo programą. Diegimo metu palikite numatytuosius nustatymus – jie tinka 95% atvejų. - macOS: Atidarykite terminalą ir parašykite
git --version. Jei Git neįdiegtas, sistema pati pasiūlys jį įdiegti. Arba naudokite Homebrew:brew install git. - Linux:
sudo apt install git(Ubuntu/Debian) arbasudo dnf install git(Fedora).
Įdiegę, pirmiausia turite pasakyti Git, kas esate. Atidarykite terminalą ir įveskite:
git config --global user.name "Jūsų Vardas"
git config --global user.email "[email protected]"Tai svarbu, nes kiekvienas jūsų padarytas pakeitimas bus pažymėtas šia informacija. Jei dirbate komandoje, kolegos matys, kas ką padarė.
Dar vienas naudingas nustatymas – numatytoji šaka. Šiuolaikinis standartas yra main, o ne senasis master:
git config --global init.defaultBranch mainPagrindinės komandos, kurias naudosite kasdien
Git turi šimtus komandų, bet realybėje 90% laiko naudosite tik kelias. Štai jos:
git init – sukuria naują Git saugyklą jūsų projekto aplanke. Tai pirmoji komanda, kurią paleidžiate naujame projekte.
cd mano-projektas
git initgit status – parodo, kas vyksta jūsų saugykloje. Kokie failai pakeisti, kokie paruošti išsaugojimui. Šią komandą naudosite labai dažnai – ji nekenksminga, nieko nekeičia, tik informuoja.
git add – parengia failus išsaugojimui. Galite pridėti konkretų failą arba viską iš karto:
git add index.html # konkretus failas
git add . # visi pakeisti failaigit commit – išsaugo paruoštus pakeitimus su žinute, kuri paaiškina, ką padarėte:
git commit -m "Pridėtas prisijungimo puslapis"Commit žinutės rašymo menas – atskira tema. Trumpa rekomendacija: rašykite ką padarėte, ne ką keičia kodas. „Fix login bug” geriau nei „Changed if statement in auth.js”.
git log – parodo visą pakeitimų istoriją. Jei norite kompaktiškesnio vaizdo: git log --oneline.
git diff – parodo, kas konkrečiai pasikeitė failuose nuo paskutinio commit. Labai naudinga prieš darant commit – galite patikrinti, ar nepalikote kažko nereikalingo.
Šakos – viena iš galingiausių Git savybių
Įsivaizduokite, kad turite veikiančią programą ir norite pridėti naują funkciją. Bet bijote sugadinti tai, kas jau veikia. Čia į pagalbą ateina šakos (branches).
Šaka – tai atskira jūsų kodo versija, kuri egzistuoja lygiagrečiai su pagrindine. Galite eksperimentuoti, laužyti, taisyti – ir tai nepalies jūsų pagrindinės main šakos.
git branch nauja-funkcija # sukurti šaką
git checkout nauja-funkcija # pereiti į ją
# arba abu veiksmai vienu kartu:
git checkout -b nauja-funkcijaKai baigiate darbą šakoje ir viskas veikia – galite ją sujungti su pagrindine:
git checkout main
git merge nauja-funkcijaKomandoje dirbant, šakos yra būtinybė. Kiekvienas kūrėjas dirba savo šakoje, o sujungimas vyksta per pull request procesą GitHub platformoje. Tai leidžia peržiūrėti kodą prieš jį priimant – labai svarbi praktika.
Vienas praktinis patarimas: šakų pavadinimus darykite aprašomus. fix-login-bug ar add-payment-feature yra geri pavadinimai. test123 ar mano-šaka – blogi.
Darbas su GitHub – nuo lokalaus prie debesies
Sukūrę paskyrą GitHub, galite pradėti sinchronizuoti savo lokalius projektus su internetu. Pirmiausia sukurkite naują saugyklą (repository) GitHub svetainėje – tai daroma per mygtuką „New repository”.
Tada susiekite savo lokalią saugyklą su GitHub:
git remote add origin https://github.com/jusu-vardas/projektas.git
git push -u origin mainremote add origin – nurodo, kur yra nuotolinė saugykla. push – nusiunčia jūsų pakeitimus į GitHub. Parametras -u origin main reikalingas tik pirmą kartą – po to pakanka rašyti tiesiog git push.
Jei norite atsisiųsti pakeitimus iš GitHub (pavyzdžiui, kolega ką nors pridėjo):
git pullJei norite atsisiųsti visą projektą iš GitHub į savo kompiuterį:
git clone https://github.com/kito-vardas/projektas.gitAutentifikacijos klausimas – šiandien GitHub nebepriima slaptažodžių per terminalą. Reikia naudoti arba SSH raktus, arba Personal Access Token. SSH raktai yra patogesnė ilgalaikė alternatyva: sugeneruojate raktų porą, viešąjį raktą įkeliate į GitHub, ir po to autentifikacija vyksta automatiškai.
Dažniausios klaidos ir kaip jas taisyti
Visi daro klaidas su Git. Net patyrę programuotojai. Skirtumas tik tas, kad jie žino, kaip jas ištaisyti.
Padarėte commit su klaida žinutėje? Jei dar nepushinote į GitHub:
git commit --amend -m "Teisingas žinutės tekstas"Norite atšaukti paskutinį commit, bet palikti pakeitimus failuose?
git reset HEAD~1Failas atsidūrė ten, kur neturėjo? Pašalinkite jį iš stage zonos:
git restore --staged failas.txtKonfliktas sujungiant šakas – tai bene labiausiai gąsdinanti situacija naujokams. Konfliktas atsiranda, kai du žmonės pakeitė tą patį kodo eilutę skirtingai. Git pažymi konflikto vietas failuose taip:
<<<<<<< HEAD
jūsų versija
=======
kito žmogaus versija
>>>>>>> kita-šakaJūs turite rankiniu būdu nuspręsti, kurią versiją palikti (arba sujungti abi), ištrinti Git žymes ir padaryti naują commit. Tai skamba baisiau nei yra iš tikrųjų.
.gitignore failas – būtinai sukurkite jį kiekviename projekte. Jame nurodote, kokių failų Git neturėtų sekti: node_modules/, .env, kompiliuoti failai, operacinės sistemos failai kaip .DS_Store. Svetainė gitignore.io sugeneruos tinkamą .gitignore failą pagal jūsų technologiją.
Kai Git tampa gyvenimo būdu
Pradėjus naudoti Git, greitai tampa sunku įsivaizduoti, kaip dirbote be jo. Tai ne perdėjimas – tai tiesiog realybė. Kai žinote, kad bet kada galite grįžti atgal, eksperimentuojate drąsiau. Kai matote visą pakeitimų istoriją, lengviau suprasti, kodėl kodas atrodo taip, kaip atrodo.
Keletas dalykų, kurie padės įsitvirtinti šioje srityje: pirma, commit darykite dažnai ir mažais gabalais. Ne „padariau visą projektą” vienu commit, o „pridėjau navigacijos meniu”, „sutvarkytas mobilaus vaizdo stilius”, „ištaisyta klaida prisijungimo formoje”. Taip istorija bus skaitoma ir naudinga.
Antra, išmokite naudoti GUI įrankius kartu su terminalu. VS Code turi puikiai integruotą Git palaikymą, GitKraken ar Sourcetree suteikia vizualų vaizdą. Terminalas yra galinga priemonė, bet vizualūs įrankiai padeda geriau suprasti, kas vyksta, ypač su šakomis ir sujungimais.
Trečia, peržiūrėkite atvirojo kodo projektus GitHub. Stebėkite, kaip kiti rašo commit žinutes, kaip struktūruoja šakas, kaip vyksta pull request diskusijos. Tai geriausia mokykla, ir ji nemokama.
Git nėra tobulas įrankis – jo komandų sintaksė kartais atrodo nelogiška, klaidų žinutės gali būti painios, o kai kurios operacijos reikalauja papildomų paieškų internete net patyrusiems kūrėjams. Bet tai šiandien yra pramonės standartas, ir investicija į jo išmokimą atsipirks labai greitai – tiek dirbant vienam, tiek komandoje.






