🔀 Git a verzování

🔀 Git a verzování

Git není složitý pokud pochopíte 5 základních příkazů. Je to systém, který sleduje změny v kódu a umožní vám vrátit se zpět když něco rozbijete. Nepotřebujete rozumět všem funkcím - stačí commit, push, pull. Tento text je pro programátory začátečníky, kteří Git nepoužívali nebo nerozumí proč ho potřebují. Naučíte se základy, vytvoříte první repository a pochopíte proč verzování je nutnost, ne volba.

Rychla odpoved

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
⚠️ Realita Gitu

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

1 Nainstalujte Git

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

2 Nastavte jméno a email

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.

3 Vytvořte první repository

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.
💡 Realistické očekávání

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 soubor
  • git add . - přidá všechny změněné soubory
  • git 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)

  1. Ráno: git pull - stáhněte případné změny
  2. Pracujete na kódu - editujete soubory
  3. Průběžně: git status - kontrola co se změnilo
  4. Po dokončení části: git add . - přidání změn
  5. Commit: git commit -m "Popis změny"
  6. 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

  1. Registrace na online Git platformě (např. GitHub) - zdarma
  2. Klikněte "New repository"
  3. Název: "muj-prvni-projekt"
  4. Popis (volitelné): "Testovací projekt pro učení Gitu"
  5. Public vs Private: Public = všichni vidí, Private = jen vy
  6. Klikněte "Create repository"

Propojení lokálního projektu s GitHubem

Máte lokální projekt a chcete ho nahrát na GitHub:

  1. Na GitHubu vytvořte repository (viz výše)
  2. 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:

  1. Pracujete na větvi "nova-funkce"
  2. Dokončíte, commitnete
  3. git checkout main - vrátíte se na main
  4. git 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ě:

  1. Git označí konfliktní soubor:
    <<<<<<< HEAD
    váš kód
    =======
    jejich kód
    >>>>>>> nova-funkce
  2. Ručně upravte soubor - rozhodněte co ponechat
  3. Smažte značky (<<<, ===, >>>)
  4. git add soubor.js
  5. git commit -m "Vyřešení merge konfliktu"

Časté chyby začátečníků

  1. Commitují vše najednou: 50 změněných souborů, commit "Změny". Rozdělte na menší logické commity.
  2. Zapomínají .gitignore: Commitují node_modules/, .env, .DS_Store. Přidejte .gitignore soubor.
  3. Pracují přímo na main: Rozbijou hlavní větev. Pro každou funkci nová větev.
  4. Nepíšou popisné commit zprávy: "Fix", "Update", "Change". Buďte specifičtí.
  5. Necommitují průběžně: Pracují celý den, pak jeden obří commit. Ztrácejí granularitu.
  6. Používají git add . slepě: Přidají soubory co tam nechtějí. Použijte git status před git add.
  7. Bojí se Gitu: "Co když něco rozbiju?" Git téměř vždy umí vrátit zpět. Experimentujte.
  8. Nepoužívají git pull před prací: Pracují na staré verzi, pak konflikt při push. Vždy pull první.
⚠️ Když něco rozbijete

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.

💡 Užitečné příkazy navíc

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.