V praxi najpoužívanejší nástroj na spravovanie kódu a v rámci predmetu ho budeme používať na odovzdávanie domácich úloh.
Používa sa, pretože:
-
umožňuje spoluprácu viacerých ľudí alebo prácu na viacerých počítačoch naraz
-
je menšie riziko, že kód stratíme, lebo kópia repozitára môže byť aj na serveri
-
môžeme sa vrátiť k všetkým verziám kódu, porovnávať ich a tak napr. nájsť chybu
Repozitáre spravujeme cez webové rozhranie fakultného GitLabu.
Zadávanie hesla pri príkazoch je možné nahradiť SSH kľúčmi.
Zverejnenie repozitára pb071 s domácimi úlohami alebo pridanie iných členov do repozitára ako v inštrukciách je proti pravidlám a prísne sa trestá.
|
.gitignore
Súbor, ktorý gitu povie, ktoré súbory nemá verzovať — aby sme do repozitára nezaniesli súbory, ktoré sú nežiaduce: zostatky z kompilácie, dočasné súbory IDE a iné. Tieto súbory potom neukazuje ani git status
. Podrobný popis v oficiálnej dokumentácii.
Do repozitára vložíme .gitignore
vhodný pre náš predmet. Ak sa nachádzame v repozitári v termináli je to tiež možné príkazom:
wget https://www.fi.muni.cz/pb071/man/for-students/gitignore -O .gitignore
git add .gitignore
git commit -m 'Add .gitignore'
Veľkosť repozitára kontroluje Kontr pri odovzdávaní úloh. Po prekročení limitu úlohu odovzdať nepôjde a za nové založenie repozitára sa strhávajú body! Preto je .gitignore dôležitý.
|
.gitlab-ci.yml
Tento súbor všeobecne popisuje úlohy, ktoré má GitLab urobiť, keď nastanú nejaké udalosti (napr. vznikne commit, merge request, …).
Súbor .gitlab-ci.yml
pripravený pre tento predmet spustí v adresároch, kde sa zmenili nejaké súbory, priložené testy.
Nie je síce povinný, ale dovolí nám pohodlnejšie overiť, že naše riešenie funguje voči našim testom, kým ho vyskúšame na Aise alebo v odovzdaní nanečisto.
Na testoch navyše spúšta aj nástroj valgrind.
Súbor do repozitára vložíme v termináli príkazom:
wget https://www.fi.muni.cz/pb071/man/for-students/gitlab-ci.yml -O .gitlab-ci.yml
git add .gitlab-ci.yml
git commit -m 'Add .gitlab-ci.yml'
Stále však platí, že pred odovzdaním naostro je vhodné si vyskúšať kompiláciu na Aise a odovzdanie nanečisto. Prostredie v GitLab CI je trochu odlišné, než to na Aise, a testy v ňom nemusia odhaliť všetky chyby. |
Základné príkazy
|
vytvorí lokálnu kópiu repozitára do nového adresára |
|
aktualizuje lokálny repozitár: stiahne zo vzdialeného repozitára všetky zmeny a pokúsi sa ich aplikovať |
|
aktualizuje vzdialený repozitár: pokúsi sa naše zmeny odoslať do vzdialeného repozitára |
|
|
|
zaradí súbory so zmenou do ďalšieho commitu (označí ich staged) |
|
zo zmien označených ako staged vytvorí novú verziu repozitára |
Bežný postup
-
aktualizovanie lokálneho repozitára, stiahneme zmeny z GitLabu:
git pull
-
programujeme
-
zobrazíme si zmeny:
git status
-
zahrnieme súbory do commitu:
git add
-
znova
git status
, skontrolujeme, či do commitu patria len správne súbory -
vytvoríme commit:
git commit -m "<message>"
-
aktualizujeme repozitár na GitLabe, zverejníme zmeny:
git push
-
prvýkrát potrebné povedať kam:
git push -u origin main
-
-
skontrolujeme, či sú správne zmeny naozaj na GitLabe a prípadne odovzdáme úlohu
Ak sme pracovali stále na rovnakom počítači, môžeme vynechať kroky, ktoré majú za cieľ synchronizovať náš lokálny repozitár so vzdialeným, teda pull
a push
.
Väčšina IDE nám umožní git ovládať priamo z GUI, teda bez písania príkazov. |
Učebné materiály
-
11 minútový vizuálny návod „A Grip On Git“ od Vincenta Tunru (na konci obsahuje pokročilejšie veci)
-
Interaktívna vizualizácia možných príkazov, Andrew Peterson (je potrebné rozumieť základom)