Git je system pro verzovani kodu - sleduje zmeny, umoznuje vracet se zpet a spolupracovat s ostatnimi. Zakladni prikazy: git init (vytvoreni), git add (priprava zmen), git commit (ulozeni), git push (odeslani na server), git pull (stazeni zmen). GitHub je cloudova sluzba pro sdileni Git repozitaru.
Proč používat Git?
Git řeší reálné problémy:
- Vrácení změn - rozbili jste kód? Vrátíte se o hodinu zpět
- Historie - vidíte kdo, kdy a proč změnil každý řádek
- Spolupráce - více lidí pracuje na kódu bez přepisování navzájem
- Záloha - kód na GitHubu, i když shoří notebook
- Experimenty - zkusíte novou funkci, nefunguje, smažete bez ovlivnění hlavního kódu
- Portfolio - GitHub je vaše CV pro programátory
První týden budete zmatení. Příkazy vypadají krypticky (git rebase, git cherry-pick). Občas něco rozbijete a budete googlovat "how to undo git commit". To je normální. 90% práce s Gitem je 5 příkazů - commit, push, pull, branch, merge. Zbytek se naučíte postupně když to budete potřebovat.
První kroky s Gitem
Windows: git-scm.com - stáhněte installer
Mac: brew install git (pokud máte Homebrew) nebo git-scm.com
Linux: sudo apt install git (Ubuntu/Debian) nebo sudo yum install git (RedHat/CentOS)
Ověření: otevřete terminál, napište git --version
git config --global user.name "Vaše Jméno"
git config --global user.email "vas@email.cz"
Toto se zobrazí u každého commitu. Nastavte to jednou, funguje ve všech projektech.
Otevřete složku s projektem v terminálu:
cd /cesta/k/projektu
git init
Gratulujeme - vytvořili jste Git repository. Složka .git se vytvořila (skrytá), tam Git ukládá historii.
Co se může pokazit (a je to normální)
První den
- Příkazy nedávají smysl - "add", pak "commit", pak "push"? Proč 3 kroky? Je to workflow, pochopíte brzy.
- Chybové hlášky - "fatal: not a git repository" = zapomněli jste git init nebo nejste ve správné složce.
- Nevíte co commitovat - všechno? Část? Když? Naučíte se cítit kdy je commit vhodný.
- Zmáčkli jste vim - git otevřel textový editor a nevíte jak ho zavřít. :wq (uložit a zavřít), :q! (zavřít bez uložení).
První týden
- Konflikt při merge - změnili jste stejný soubor jako kolega. Git neví kterou verzi použít. Musíte to vyřešit ručně.
- Commitujete špatné soubory - .env, node_modules, .DS_Store. Potřebujete .gitignore soubor.
- Zapomněli jste push - commitli lokálně, ale změny nejsou na GitHubu. Commit ≠ push.
- Ztratili jste změny - git reset --hard a je pryč. Příště buďte opatrní s --hard flagy.
První týden: zmatení, časté googlování, bojíte se něco rozbít. První měsíc: commit/push/pull je automatické, zvládáte základy. 3 měsíce: práce s větvemi, merge konflikty nejsou děsivé. 6 měsíců: Git je přirozená část workflow, nemusíte přemýšlet.
Základní Git příkazy
git init
Co dělá: Vytvoří nové Git repository v aktuální složce
Kdy použít: Jednou na začátku nového projektu
Příklad: git init
git status
Co dělá: Ukáže stav repository - co se změnilo, co je staged, co ne
Kdy použít: Kdykoli chcete vědět co se děje. Používejte často.
Příklad: git status
git add
Co dělá: Přidá soubory do staging area (připraví je na commit)
Kdy použít: Před každým commitem
Příklady:
git add soubor.js- přidá jeden souborgit add .- přidá všechny změněné souborygit add src/- přidá všechny soubory ve složce src/
git commit
Co dělá: Uloží změny do historie s popisnou zprávou
Kdy použít: Po dokončení logické jednotky práce (oprava bugu, nová funkce)
Příklady:
git commit -m "Oprava bugu v přihlášení"git commit -m "Přidána validace emailu"
git push
Co dělá: Odešle commity z lokálního počítače na vzdálený server (GitHub)
Kdy použít: Po commitu, když chcete sdílet změny nebo zazálohovat
Příklad: git push origin main
git pull
Co dělá: Stáhne změny ze vzdáleného serveru do lokálního repository
Kdy použít: Před začátkem práce, abyste měli aktuální verzi
Příklad: git pull origin main
git clone
Co dělá: Stáhne celé repository z GitHubu na váš počítač
Kdy použít: Jednou na začátku, když chcete pracovat na existujícím projektu
Příklad: git clone https://github.com/uzivatel/projekt.git
Základní Git workflow
Každodenní workflow (solo projekt)
- Ráno:
git pull- stáhněte případné změny - Pracujete na kódu - editujete soubory
- Průběžně:
git status- kontrola co se změnilo - Po dokončení části:
git add .- přidání změn - Commit:
git commit -m "Popis změny" - Večer nebo průběžně:
git push origin main- odeslání na GitHub
Jak často commitovat
- Příliš často: Po každém řádku kódu - nesensovní
- Příliš zřídka: Jednou týdně - ztratíte granularitu historie
- Správně: Po dokončení logické jednotky (oprava bugu, nová funkce, refaktoring jednoho souboru)
Pravidlo: Commit by měl být samostatně funkční - pokud se vrátíte k tomuto commitu, projekt by měl fungovat.
Dobré commit zprávy
Špatně:
- "Update" - co jste updatli?
- "Fix" - co jste opravili?
- "asdf" - vůbec ne
- "Změny" - nepopisuje nic
Dobře:
- "Oprava validace emailu v registračním formuláři"
- "Přidána funkcionalita exportu do CSV"
- "Refaktoring API klienta pro lepší error handling"
- "Aktualizace závislostí (React 17 → 18)"
GitHub - vzdálený repository
Co je GitHub
GitHub je hosting pro Git repositories. Git = lokální verzování na vašem PC, GitHub = cloud pro sdílení a zálohu. Existují alternativy (GitLab, Bitbucket), ale GitHub je nejpopulárnější.
Vytvoření účtu a prvního repository
- Registrace na online Git platformě (např. GitHub) - zdarma
- Klikněte "New repository"
- Název: "muj-prvni-projekt"
- Popis (volitelné): "Testovací projekt pro učení Gitu"
- Public vs Private: Public = všichni vidí, Private = jen vy
- Klikněte "Create repository"
Propojení lokálního projektu s GitHubem
Máte lokální projekt a chcete ho nahrát na GitHub:
- Na GitHubu vytvořte repository (viz výše)
- V terminálu v projektu:
git remote add origin https://github.com/vase-jmeno/muj-prvni-projekt.git
git branch -M main
git push -u origin main
První push může vyžadovat přihlášení - GitHub vás provede.
Personal Access Token
GitHub už nepodporuje hesla pro Git operace. Potřebujete Personal Access Token:
GitHub → Settings → Developer settings → Personal access tokens → Generate new token → Vyberte "repo" → Generate
Token zkopírujte a použijte místo hesla při git push.
Práce s větvemi (branches)
Co jsou větve
Větev = paralelní verze kódu. Hlavní větev (main/master) je stabilní, pracujete na vedlejší větvi, pak ji sloučíte. Umožňuje experimentovat bez rozbití hlavního kódu.
Základní příkazy pro větve
git branch
Co dělá: Zobrazí všechny větve
Příklad: git branch
git branch nova-funkce
Co dělá: Vytvoří novou větev s názvem "nova-funkce"
Příklad: git branch nova-funkce
git checkout nova-funkce
Co dělá: Přepne se na větev "nova-funkce"
Příklad: git checkout nova-funkce
Zkratka: git checkout -b nova-funkce - vytvoří a přepne najednou
git merge nova-funkce
Co dělá: Sloučí změny z "nova-funkce" do aktuální větve
Workflow:
- Pracujete na větvi "nova-funkce"
- Dokončíte, commitnete
git checkout main- vrátíte se na maingit merge nova-funkce- sloučíte změny do main
Merge konflikty
Konflikt = vy i kolega změnili stejný řádek, Git neví kterou verzi použít. Musíte to vyřešit ručně:
- Git označí konfliktní soubor:
<<<<<<< HEAD váš kód ======= jejich kód >>>>>>> nova-funkce - Ručně upravte soubor - rozhodněte co ponechat
- Smažte značky (<<<, ===, >>>)
git add soubor.jsgit commit -m "Vyřešení merge konfliktu"
Časté chyby začátečníků
- Commitují vše najednou: 50 změněných souborů, commit "Změny". Rozdělte na menší logické commity.
- Zapomínají .gitignore: Commitují node_modules/, .env, .DS_Store. Přidejte .gitignore soubor.
- Pracují přímo na main: Rozbijou hlavní větev. Pro každou funkci nová větev.
- Nepíšou popisné commit zprávy: "Fix", "Update", "Change". Buďte specifičtí.
- Necommitují průběžně: Pracují celý den, pak jeden obří commit. Ztrácejí granularitu.
- Používají git add . slepě: Přidají soubory co tam nechtějí. Použijte
git statuspředgit add. - Bojí se Gitu: "Co když něco rozbiju?" Git téměř vždy umí vrátit zpět. Experimentujte.
- Nepoužívají git pull před prací: Pracují na staré verzi, pak konflikt při push. Vždy pull první.
git reflog - seznam všech akcí, můžete se vrátit téměř kdekoli
git reset --hard HEAD~1 - vrácení posledního commitu (POZOR: ztratíte změny)
git revert [commit-hash] - bezpečnější vrácení - vytvoří nový commit který ruší změny
Google je váš přítel - 99% problémů už někdo vyřešil na Stack Overflow.
git log - historie commitů
git log --oneline - kompaktní historie
git diff - ukáže co se změnilo (před add)
git diff --staged - ukáže co je staged (před commit)
git stash - dočasně schová změny (užitečné při přepínání větví)
git stash pop - vrátí schované změny
Caste otazky
Co je Git a k cemu slouzi?
Git je system pro verzovani kodu - sleduje zmeny, umoznuje vracet se zpet kdyz neco rozbijete a spolupracovat s ostatnimi bez prepisovani. Kod na GitHubu mate zalozeny i kdyz vam shori notebook.
Jaky je rozdil mezi Git a GitHub?
Git je nastroj pro verzovani, ktery bezi lokalne na vasem pocitaci. GitHub je cloudova sluzba pro sdileni Git repozitaru online. Git muzete pouzivat bez GitHubu, ale GitHub potrebuje Git.
Jak vytvorit prvni Git repository?
V terminalu prejdete do slozky s projektem (cd /cesta/k/projektu) a spustite git init. Tim vytvorite novy Git repozitar. Pote pouzijte git add . pro pridani souboru a git commit -m "Zprava" pro ulozeni zmen.
Co jsou to vetve (branches) v Gitu?
Vetve umoznuji pracovat na nove funkci oddelene od hlavniho kodu. Vytvorite vetev, pracujete na ni, a az je vse hotovo, sloucite ji zpet do hlavni vetve (main). Pokud to nevyjde, hlavni kod zustane neposkozen.