Slovník pojmů
Repozitář
Repozitář drží zdrojový kód, historii a související projektové soubory. Není totožný s projektem, Composer repozitářem ani Repository patternem v aplikační architektuře.
Stručná definice
Úložiště verzované historie projektu a jeho sdílené konfigurace.
Lokální Git repozitář obsahuje Git metadata a historii spolu s pracovní kopií souborů. Vzdálený repozitář umožňuje historii sdílet s týmem, řídit přístupy, pořádat pull requesty nebo spouštět CI. Veřejný a soukromý repozitář se liší dostupností, ne automaticky úrovní bezpečnosti.
Slovo repository se v softwaru používá i pro Repository pattern: objektový vzor abstrahující načítání a ukládání dat aplikace. Tento článek popisuje repozitář zdrojového kódu; vzor v aplikaci není souborová složka ani Git hosting.
Jaký problém řeší
Sdílí kód, historii a pravidla spolupráce
Repozitář je společný zdroj pro vývoj, review, sestavení a dohledání změn projektu.
- zdrojový kód, testy, dokumentaci a konfiguraci projektu
- historii commitů, větve a tagy release
- pull requesty nebo merge requesty a řízení přístupů
- CI workflow, Docker konfiguraci a databázové migrace
- README, licenční informace a technický kontext pro další vývojáře
Praktický příklad
Co patří do repozitáře PHP aplikace
Repozitář e-shopové aplikace může obsahovat zdrojový kód, testy, composer.json, composer.lock, Docker konfiguraci, CI workflow, migrace a README. Tyto soubory dohromady umožňují sestavit, zkontrolovat a pochopit konkrétní verzi aplikace.
Produkční secrets, lokální cache, nahrané uživatelské soubory a odvoditelný adresář vendor sem obvykle nepatří. .gitignore může zabránit přidání dosud nesledovaných souborů, ale nenahradí odstranění již uniklého přístupu z historie.
shop/
├── .git/
├── src/
├── tests/
├── composer.json
├── composer.lock
├── docker-compose.yml
└── README.md
Jak funguje
Lokální a vzdálená historie spolupracují
Textový diagram popisuje běžný checkout: remote repozitář → clone → lokální .git a working tree → commit → push.
- Vzdálený zdroj Remote repozitář hostuje sdílené větve a pravidla přístupu. Může být bare, tedy bez pracovní kopie.
- Clone Vývojář vytvoří lokální kopii historie i working tree, ve které upravuje soubory.
- Lokální změna Commit zapíše vybrané změny do lokální Git historie; stále nemusí být viditelné pro tým.
- Sdílení a review Push odešle větev do remote, kde hostingová služba může nabídnout pull request, kontrolu a ochranu větve.
- Integrace a údržba Po sloučení se v repozitáři zachová historie, dokumentace a konfigurace potřebná pro další build či release.
Důležité pojmy
Historie, pracovní kopie a hosting jsou různé vrstvy.
Přesné rozlišení je důležité pro bezpečnost, přístupy i automatizaci.
Lokální a vzdálený repozitář
Lokální repozitář má každý klon. Vzdálený je cíl pro sdílení, ale není zvláštním druhem Gitu; origin je jen běžný místní název remote.
Working tree a .git
Working tree obsahuje soubory, které vývojář upravuje. Git metadata jsou obvykle v .git; worktrees mohou používat odkaz na sdílené metadata.
Větev, tag a výchozí větev
Větve podporují vývoj změn, tag označuje konkrétní historický bod a výchozí větev je týmová dohoda, ne technická autorita.
Dokumentace a přístupy
README, licence, CI a pravidla ochrany větví jsou důležitou součástí sdíleného produktu. Přístupy musí odpovídat rolím lidí i automatizace.
.gitignore
Pravidla ignorování se týkají dosud nesledovaných souborů. Neodstraní data, která už jsou v commitu nebo vzdálených klonech.
Vztah k podobným pojmům
Repozitář není automaticky projekt ani databázový vzor.
Stejné slovo v jiném kontextu neznamená stejnou technickou věc.
- Repozitář a projekt
- Projekt může používat více repozitářů a jeden monorepo může obsahovat více aplikací či balíčků.
- Repozitář a GitHub
- Repozitář je data a historie; GitHub je jedna služba, která může Git repozitář hostovat.
- Repozitář a Composer repository
- Composer repository je zdroj balíčků a metadat pro resolver závislostí, ne nutně pracovní Git historie týmu.
- Repozitář a Repository pattern
- Repository pattern je aplikační abstrakce pro data. Git repozitář ukládá soubory a historii změn.
Výhody a omezení
Jedno úložiště usnadňuje spolupráci, ale potřebuje správu.
Přínosy
- sdílená historie kódu, dokumentace a konfigurace
- opakovatelné sestavení aplikace z verzovaných souborů
- review, CI a řízení přístupů v jednom workflow
- dohledatelnost změn a release verzí
Časté chyby
- uložit do veřejného repozitáře secret nebo osobní data
- považovat soukromý repozitář za bezpečný bez správy přístupů
- spoléhat, že .gitignore odstraní již publikovaná data
- dělit systém do mnoha repozitářů bez jasného vlastnictví a životního cyklu
Kdy dává smysl
Pro kód a konfiguraci, které musí být reprodukovatelné a sdílené.
Repozitář je přirozeným základem pro téměř každý udržovaný software. Umožní předat projekt dalšímu vývojáři, napojit testy a znovu sestavit konkrétní verzi aplikace.
Rozdělení do monorepa nebo více repozitářů je architektonické a organizační rozhodnutí. Má zohlednit vlastnictví, sdílené změny, nezávislost release i náklady na koordinaci, ne jen počet služeb.
Na co myslet
Repozitář je i bezpečnostní a komunikační hranice.
Soubory v historii mohou přežít dlouho; dohodnutá pravidla jsou proto důležitější než samotné založení repozitáře.
- necommitovat secrets, lokální cache ani uživatelské uploady
- verzovat zdrojový kód, testy, migrace a reprodukovatelnou konfiguraci
- udržovat README a základní návod pro lokální vývoj a kontrolu
- chránit hlavní větev review a CI podle rizika projektu
- při úniku hodnoty ihned rotovat přístup, ne pouze upravit soubor
Časté otázky
Repozitář bez záměn
Jaký je rozdíl mezi projektem a repozitářem?
Projekt je širší celek. Může mít jeden repozitář, více repozitářů nebo být součástí monorepa s více aplikacemi.
Co znamená lokální a vzdálený repozitář?
Lokální repozitář je historie v klonu vývojáře. Vzdálený repozitář slouží ke sdílení větví a společné historii.
Je GitHub repozitář totéž jako Git?
GitHub hostuje Git repozitář a přidává služby spolupráce. Git je samotný verzovací systém.
Co řeší .gitignore a co ne?
Pomáhá ignorovat dosud nesledované soubory. Neodstraní soubor ani secret, který už byl commitnutý a sdílený.
Jak držím kvalitu vývoje
Repozitář propojuji s testy, kontrolami a čitelnou historií.
V PHP projektech používám verzovaný kód, quality gates a automatizaci tak, aby byl vývoj dohledatelný a bezpečně opakovatelný.