Git – základy pre prácu v STEMlabe
Poznámka
Git je nástroj na sledovanie zmien v súboroch a spoluprácu na projektoch. V STEMlabe ho používaš na ukladanie a odovzdávanie svojich projektov (Python, Arduino kód, dokumentácia) na náš vlastný server git.stemlab.sk, kde bežia GitLab aj Mattermost.
Git vs. GitLab – v čom je rozdiel
Git je program, ktorý bežiaci na tvojom počítači sleduje históriu zmien v priečinku projektu. GitLab je webová platforma (bežiaca na našom serveri git.stemlab.sk), kam si históriu môžeš nahrať, zdieľať ju so spolužiakmi a vyučujúcim, a pracovať na nej z viacerých počítačov.
Tvoj počítač (Git) --push--> git.stemlab.sk (GitLab) --pull--> iný počítač
Upozornenie
Git a GitLab nie sú to isté. Git funguje aj úplne bez internetu – iba lokálne. Až príkaz push/pull posiela zmeny na server.
Základné pojmy
- repozitár (repo) – priečinok projektu sledovaný Gitom
- commit – “uložený bod” v histórii – snímka projektu s popisom zmeny
- push – odoslanie commitov na server (git.stemlab.sk)
- pull – stiahnutie commitov zo servera
- clone – stiahnutie celého repozitára prvý raz
- branch (vetva) – samostatná línia vývoja, oddelená od hlavnej
Prvotné nastavenie
Pred prvým použitím Gitu na počítači sa musíš identifikovať – tvoje meno sa potom zobrazuje pri každom commite.
git config --global user.name "Meno Priezvisko"
git config --global user.email "tvoj_login@stemlab.sk"Tip
Toto nastavenie stačí urobiť raz na počítač, nie pri každom projekte.
Prihlásenie na git.stemlab.sk
- Otvor
https://git.stemlab.skv prehliadači a prihlás sa svojím školským kontom. - Vytvor nový projekt (alebo požiadaj vyučujúceho o pozvanie do existujúceho).
- Skopíruj Clone URL – nájdeš ju pod modrým tlačidlom Clone na stránke projektu.
Získanie projektu – clone
Existujúci projekt zo servera stiahneš jedným príkazom:
git clone https://git.stemlab.sk/tvoj_login/nazov_projektu.git
cd nazov_projektu # prejdi do stiahnutého priečinkaUpozornenie
Pri prvom pripojení na git.stemlab.sk ti Git/GitLab vyžiada prihlasovacie meno a heslo (alebo token, podľa nastavenia servera). Bez správnych prístupových údajov clone, push ani pull nebudú fungovať.
Základný pracovný cyklus
Toto sú 4 príkazy, ktoré budeš používať najčastejšie – v presne tomto poradí:
git status # čo sa zmenilo od posledného commitu?
git add nazov_suboru # priprav zmenu na uloženie (alebo: git add .)
git commit -m "Stručný popis" # ulož pripravené zmeny ako nový commit
git push # odošli commity na git.stemlab.skgit pull # stiahni nové commity zo servera (napr. od spolužiaka)Tip
git status spúšťaj často – ukáže presne, ktoré súbory sú zmenené, nové, alebo pripravené na commit. Nikdy neuškodí.
Mini-úloha – prvý commit
- Vytvor nový priečinok
~/projekty/git-testa prejdi doň. - Spusti
git init(vytvorí nový lokálny repozitár). - Vytvor súbor
poznamky.txts ľubovoľným textom. - Spusti
git add poznamky.txta potomgit commit -m "Prvý commit". - Over históriu príkazom
git log.
Súbor .gitignore
Niektoré súbory nechceš ukladať do histórie – napríklad dočasné súbory Pythonu alebo veľké binárne výstupy. Vytvor súbor .gitignore v koreni projektu:
__pycache__/
*.pyc
.vscode/
_book/
Git tieto súbory a priečinky bude od teraz ignorovať – git status ich ani nezobrazí.
Vetvy (branches)
Vetva je samostatná kópia projektu, na ktorej môžeš skúšať zmeny bez toho, aby ovplyvnili hlavnú verziu (main).
git branch # zoznam vetiev, * označuje aktuálnu
git branch nova-funkcia # vytvor novú vetvu
git checkout nova-funkcia # prepni sa na ňu
git checkout -b nova-funkcia # vytvorenie + prepnutie v jednom kroku
git checkout main # návrat na hlavnú vetvuKeď je nová funkcia hotová a odskúšaná, zlúčiš ju do main:
git checkout main
git merge nova-funkciaUpozornenie
Ak Git pri merge nahlási “CONFLICT”, znamená to že rovnaký riadok bol zmenený na dvoch miestach naraz. Git ti v súbore vyznačí obe verzie pomocou značiek <<<<<<<, =======, >>>>>>> – musíš ručne vybrať, ktorá časť ostane, a značky vymazať.
História a porovnávanie
git log # história commitov (najnovší navrchu)
git log --oneline # skrátený výpis, jeden commit na riadok
git diff # čo presne sa zmenilo od posledného commitu
git diff --staged # čo presne je pripravené v "add", ale ešte nie v commiteMini-úlohy – Git
- V projekte
git-testvytvor novú vetvupokusa prepni sa na ňu. - Uprav
poznamky.txt, ulož zmenu ako nový commit. - Prepni sa späť na
maina všimni si, že zmena vpoznamky.txtzmizla. - Zlúč vetvu
pokusdomainpríkazomgit merge. - Over
git log --oneline– mal by si vidieť obidva commity. - Vytvor na
git.stemlab.sknový prázdny projekt a napoj naň lokálny repozitár:git remote add origin <URL>, potomgit push -u origin main.
Cheat sheet – rýchla referencia
git config --global user.name "Meno" # nastavenie mena (raz na počítač)
git clone URL # stiahni projekt zo servera
git status # čo sa zmenilo
git add súbor # priprav zmenu (alebo: git add .)
git commit -m "popis" # ulož zmenu ako commit
git push # odošli na git.stemlab.sk
git pull # stiahni zmeny zo servera
git log --oneline # história commitov, skrátene
git branch # zoznam vetiev
git checkout -b nazov # nová vetva + prepnutie
git checkout main # späť na hlavnú vetvu
git merge nazov # zlúčenie vetvy do aktuálnej
git diff # rozdiely oproti poslednému commitu