PHPPamokos.lt


5. Nutolusios repozitorijos: "git clone"

Iki šiol viskas, ką mes darėme, buvo susiję su mūsų pačių sukurta repozitorija mūsų lokaliame kompiuteryje. Bet Git sistemos realus pritaikymas globalesnis - darbas su kažkieno kito parašytu kodu ir jo versijomis, ypač dirbant komandoje. Taigi, pereikime prie tų įdomesnių dalykų.

Pradėkime nuo to, kad repozitorijas galima saugoti ne tik savo kompiuteryje, kaip mes tai darėme iki šiol, bet ir įkelti į nutolusį serverį - tam skirtos specialios sistemos, populiariausios iš jų GitHub ir BitBucket. Kaip ten įkelti savo repozitoriją - kalbėsime atskiroje pamokoje vėliau, o dabar išmoksime kaip "pasinaudoti svetimu kodu".


"Klonuojame" svetimą repozitoriją - git clone

Sakykime, kad kažkas jau yra patalpinęs savo kažkokią kodo biblioteką ar projektą į GitHub, ir jums reikia jį parsisiųsti. Kaip pavyzdį paimkime mano mėgstamą Laravel PHP frameworką - jo repozitorija prieinama viešai šiuo GitHub adresu: https://github.com/laravel/laravel

Matote failų ir katalogų sąrašą, su konkrečiais komentarais, kada kas buvo pakeista ir kas tai padarė. Kol kas nesigilinkite į įvairius skaičiukus, galite tik atkreipti dėmesį kairėje viršuje skaičius 4601 commits - būtent tiek "commit'ų" jau buvo padaryta nuo repozitorijos kūrimo pradžios, bent jau toks skaičius šio kurso rašymo metu.

Taigi, pabandykime parsisiųsti šią repozitoriją. Dešinėje pusėje matote tam kelis mygtukus ir būdus, įskaitant ir "Download ZIP", bet mus domina būtent "klonavimo" galimybė - padarytime tai iš Git per komandinę eilutę. Tam mums reikia žinoti repozitorijos adresą, kuris yra parašytas laukelyje HTTPS clone URL:

Darome to URL Copy, jis atrodo taip:
https://github.com/laravel/laravel.git
Tada grįžtame į mums seniai pažįstamą Git Bash. Susikurkime naują katalogą Projects ir jame paleidžiame komandą git clone, kurios parametrą įklijuojame būtent tą repozitorijos URL adresą.
git clone https://github.com/laravel/laravel.git

Ir tada vyksta repozitorijos failų parsisiuntimas:

Kai viskas pasibaigia, rodomas rezultatas - kiek ko parsiųsta:

Ir dabar galite užeiti pasižiūrėti, kur ir kaip nusikopijavo Laravel failai ir katalogai:

Atkreipkite dėmesį, kad kartu susikūrė ir katalogas .git, kuriame bus sekami pakeitimai, jei juos padarysite jūs ar repozitorijos autorius.


Nustatome klonavimo katalogą

Ar pastebėjote, kad git clone komanda parsiunčia repozitorijos failus į sukurtą specialų katalogą tuo pačiu pavadinimu. Mes komandą leidome, būdami aktyviame kataloge c:\Users\Povilas\Projects, o jo viduje buvo automatiškai sukurtas katalogas c:\Users\Povilas\Projects\laravel, ir būtent ten viskas nukopijuota.
Jei norite to papildomo katalogo sukūrimo išvengti ir parsisiųsti viską į savo esamą katalogą pridėkite gale tašką:
git clone https://github.com/laravel/laravel.git .
Taip pat galima nurodyti ir kitą katalogo pavadinimą, kuris bus sukurtas ir repozitorija įrašoma būtent į jį. Pvz, jei norite kad failai būtų parsiųsti į c:\Users\Povilas\Projects\laravel5, komanda turi atrodyti taip:
git clone https://github.com/laravel/laravel.git laravel5


Privačios repozitorijos

Ne visos repozitorijos, esančios GitHub sistemoje, prieinamos viešai. Gali būti ir taip, kad jums duoda prieigą prie kažkokio vidinio kompanijos projekto, kurį galėsite klonuoti tik su savo GitHub vartotoju. Apie darbą su GitHub dar kalbėsime atskiroje pamokoje, o kol kas žinokite tik tai, kad jeigu jums kas nors atsiųs adresą repozitorijos klonavimui, jūsų gali paprašyti įvesti slaptažodį.

Tuomet viskas veikia taip: jūs įrašote savo GitHub vartotojo el.paštą ir slaptažodį, ir jeigu tas jūsų GitHub vartotojas yra repozitorijos autoriaus pridėtas į tos repozitorijos vartotojų sąrašą, tada viskas tvarkoje - priešingu atveju išvysite klaidos pranešimą.

Lygiai taip pat veikia ir kitos repozitorijų saugojimo sistemos - pvz Bitbucket. Taigi pademonstruosiu su savo pavyzdžiu - štai kas bus jeigu kas nors norės parsisiųsti vieną iš mano privačių repozitorijų, neturėdamas tam teisių:

Įrašome neteisingą slaptažodį, ir...



Apibendrinimas

Štai tokiu būdu jūs galite parsisiųsti kažkieno kito sukurtas repozitorijas, tada galite atlikti pakeitimus lokaliai, tada daryti git commit ir vėliau įkelti pakeitimus į tą pačią nutolusią repozitoriją - kaip tik apie tai kalbėsime kitoje pamokoje.


(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com