Verzovací systém GIT

Co je Git

  • Distribuovaný verzovací systém (DVCS)

  • Každý vývojář má plnou kopii historie

  • Rychlé lokální operace

  • Silná práce s větvemi

Proč Git používat

  • Historie změn

  • Možnost návratu zpět

  • Paralelní vývoj

  • Code review workflow

  • Integrace s CI/CD

2. Základní pojmy

Repository

  • Projekt + historie

  • Lokální / vzdálený (remote)

Commit

  • Snapshot projektu v čase

  • Obsahuje autora, datum, zprávu

Branch

  • Oddělená vývojová větev

  • Umožňuje paralelní vývoj

HEAD

  • Ukazatel na aktuální commit

Working Directory vs Staging Area

  • Working directory = aktuální soubory

  • Staging area (index) = připravené změny pro commit

3. Instalace a konfigurace

Instalace (Linux)

apt install git
dnf install git

Základní konfigurace

git config --global user.name "Jmeno Prijmeni"
git config --global user.email "email@example.com"

Inicializace projektu

git init

Klonování existujícího repozitáře

git clone https://example.com/repo.git

4. Základní workflow

Kontrola stavu

git status

Přidání změn do staging area

git add soubor.txt
git add .

Vytvoření commitu

git commit -m "Popis změny"

Historie commitů

git log
git log --oneline --graph --decorate

5. Práce s větvemi

Vytvoření nové větve

git branch feature-x
git switch feature-x

Nebo:

git switch -c feature-x

Sloučení větve (merge)

git switch main
git merge feature-x

Rebase

git switch feature-x
git rebase main

Rozdíl: - merge → zachovává historii větvení - rebase → lineární historie

6. Remote repozitáře

Přidání remote

git remote add origin https://example.com/repo.git

Odeslání změn

git push origin main

Stažení změn

git fetch
git pull

Rozdíl: - fetch → pouze stáhne změny - pull → fetch + merge

7. Správné commitování

Zásady

  • Jeden commit = jedna logická změna

  • Nepřidávat rozpracovaný kód

  • Smysluplné zprávy

Doporučená struktura zprávy

Krátký popis (max 50 znaků)

Detailnější vysvětlení změny.

Conventional Commits

feat: přidána autentizace
fix: oprava validace vstupu
refactor: úprava struktury modulu
docs: aktualizace dokumentace
test: přidány testy

8. Řešení konfliktů

Kdy vzniká konflikt

  • Úprava stejného řádku ve dvou větvích

Označení konfliktu

<<<<<<< HEAD
moje změna
=======
cizí změna
>>>>>>> branch

Postup řešení

  1. Ručně upravit soubor

  2. git add

  3. git commit

9. .gitignore

Účel

  • Definuje, které soubory Git nesleduje

Příklad (Python)

__pycache__/
*.pyc
.env
.venv/
dist/

Příklad (Node.js)

node_modules/
dist/
.env

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

  • Commitování velkých binárních souborů

  • Commitování hesel (.env)

  • Práce přímo na main větvi

  • Příliš velké commity

  • Používání pull místo fetch + merge bez kontroly

11. Doporučený workflow (Feature Branch)

  1. Vytvořit větev z main

  2. Implementovat změnu

  3. Průběžně commitovat

  4. Aktualizovat větev (rebase/merge)

  5. Vytvořit Pull Request

  6. Code review

  7. Merge do main

12. Pokročilé nástroje

Interaktivní rebase

git rebase -i HEAD~5

Možnosti: - squash - reword - drop

Stash

git stash
git stash pop

Reset

git reset --soft HEAD~1
git reset --hard HEAD~1

13. Shrnutí

  • Git je nástroj pro bezpečný vývoj

  • Pracuj v malých logických commitech

  • Používej větve

  • Piš kvalitní commit zprávy

  • Chraň main větev

  • Pravidelně synchronizuj změny