řeší problém “jak pracovat v týmu na jednom kódu” a “jak se vrátit, když něco rozbiju”
nahrazuje peklo typu oauth_final_v2_opravdu_final_final2.zip
teorie, historie
- git stvořil Linus Torvalds, potřeboval spravovat vývoj Linux Kernelu
- centralizované vs distribuované:
- SVN (subversion): starší systém
- existuje jeden centrální server
- když nejde internet, nemůžeš verzovat
- ukládá primárně rozdíly (diffs/deltas)
- git (distribuovaný):
- každý vývojář má na disku kompletní kopii celé historie projektu
- můžeš pracovat offline a na server (GitHub) to poslat až potom
jak to funguje uvnitř
- staré systémy (SVN) ukládal změny (diffy) mezi soubory
- git ukládá snapshoty.
- každý commit je odraz celého souborového systému v daný moment
- git je chytrý - aby nezabíralo tunu místa, git si udělá jen odkaz
- složka
.git
- skrytá složka v kořenu projektu
- tady je celá db historie
- pokud ji smažeš, přijdeš o historii
git workflow
tři stavy, kde se soubor může nacházet:
- working directory (kde reálně píšeš kód)
- staging area: přípravná zóna (
git add), sem dáváš to, co chceš dál poslat
- repository: uložená historie (
git commit)
příkazy