🔀 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.

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