Slovník pojmů
Větev v Gitu
Větev oddělí historii změny před integrací. Je to reference na commit, ne druhá fyzická kopie repozitáře.
Stručná definice
Jméno, které ukazuje na špičku jedné linie historie.
V běžném repozitáři může main ukazovat na poslední schválený commit a feature branch na poslední commit připravované funkce. Obě větve sdílejí společné předky a Git znovu neukládá celý projekt pro každou větev. Nový commit posune jen větev, na které právě pracuješ.
HEAD obvykle ukazuje na aktuálně checkoutnutou lokální větev. Při detached HEAD může ukazovat přímo na commit. Remote-tracking větev, například origin/main, je lokální informace o posledním známém stavu větve na remote; není to vzdálená větev, do které přímo zapisuješ.
K čemu slouží
Oddělený vývoj, review a vědomá integrace
Větev umožní připravit změnu bez okamžitého posunu hlavní historie. Izoluje vývojový tok, ne přístupová práva ani data.
- samostatná feature branch pro novou funkci nebo experiment
- krátká větev pro opravu chyby, která má projít review a testy
- porovnání změny proti main před merge nebo pull requestem
- sledování vzdálené větve pomocí upstream a remote-tracking reference
- bezpečný návrat z neúspěšného pokusu, dokud nejsou commity integrované
Praktický příklad
Feature branch pro nový export objednávek
Z aktuálního main vytvoříš feature/order-export. HEAD se přepne na novou lokální větev, ale main dál ukazuje na původní commit. Každý další commit na feature branch posune její špičku, zatímco main se nezmění.
Po pushi může hostovací služba vytvořit pull request z feature/order-export do main. Review a CI rozhodnou, zda se větev smí mergeovat. Název větve ani pull request ale nejsou bezpečnostní hranice: oprávnění ke čtení, zápisu a nasazení řeší repozitář, služba a infrastruktura.
Shell
git switch main
git switch -c feature/order-export
git push -u origin feature/order-export
git branch -vv
Jak spolu souvisí
Commit, větev a pull request v jedné sekvenci
Diagram: main → vytvoření feature branch → lokální commity → push a tracking → pull request → review a CI → merge do main.
- Výchozí main Lokální main ukazuje na výchozí commit. Před novou prací si ověř, jaký vztah má k origin/main a jak tým aktualizaci provádí.
- Feature branch a HEAD git switch -c vytvoří lokální větev na aktuálním commitu a HEAD začne ukazovat na ni. Pracovní soubory se přepnou na její obsah.
- Lokální commity Každý nový commit posune feature branch na novou špičku. Main se tím nemění.
- Push a tracking git push -u origin feature/order-export odešle větev a nastaví upstream. Remote-tracking reference origin/feature/order-export se aktualizuje fetchováním informací z remote.
- Pull request a merge Pull request je návrh na spojení v hostovací službě. Po review a CI merge spojí historie podle zvoleného workflow; není to automatický důsledek samotného pushe.
Důležité pojmy
HEAD, main, feature branch a remote nemají stejnou roli
Jasné rozlišení zabraňuje nečekanému přepsání historie i chybnému očekávání, že větev poskytuje bezpečnostní izolaci.
Pohyblivý odkaz
Lokální větev je reference na jeden commit. Nevytváří při založení fyzickou kopii souborů ani nezabírá druhou velikost repozitáře.
HEAD a main
HEAD říká, na čem právě pracuješ; obvykle odkazuje na aktuální lokální větev. main je jen konvenční název větve, nikoli zvláštní bezpečnostní nebo technický typ.
Feature branch a merge
Feature branch drží související commity mimo main, dokud je tým neintegruje. Merge propojí historii a může vyžadovat vyřešení konfliktu, když změny nelze zkombinovat automaticky.
Lokální, remote a tracking
Lokální větev je tvoje reference. Remote je sdílené úložiště, například origin. Remote-tracking větev je místní záznam posledního známého stavu na remote; upstream určuje výchozí vztah pro pull a status.
Není to security boundary
Název ani existence větve neomezuje, kdo uvidí kód nebo secret. Přístupy, ochranu main a nasazení nastavuj v repozitářové službě a infrastruktuře.
Výhody a rizika
Izolovaný tok změny bez falešného pocitu izolace
Přínosy
- práce na funkci bez okamžité změny main
- srozumitelný cíl pro pull request, review a CI
- paralelní vývoj se společnou historií předků
- možnost porovnat a integrovat změnu vědomě
Na co pozor
- dlouho žijící větev se může vzdálit od main a přinést složitý merge
- zaměnění origin/main za přímo upravovanou vzdálenou větev
- force push na sdílenou feature branch bez domluvy
- představa, že větev skrývá citlivá data nebo obchází oprávnění
Praktické použití
Větev udržuj krátkou a účelovou.
Pro běžnou změnu bývá praktičtější krátká feature branch založená na aktuálním main než dlouhodobá větev s mnoha nesouvisejícími úkoly. Pravidelná integrace změn z main podle týmového workflow snižuje překvapení při konečném merge.
Přepis vlastní nepublikované feature branch pomocí amendu nebo rebase může zpřehlednit historii. Jakmile na větvi pracují další lidé nebo z ní vychází pull request, měníš jim identifikátory commitů; nejdřív ověř stav přes Git a domluv další postup.
Kontrolní seznam
Co zkontrolovat při práci s větví
Větev je jednoduchá reference, ale týmové workflow nad ní potřebuje jasná pravidla.
- název stručně vystihuje účel změny a odpovídá týmové konvenci
- git status a git branch -vv ukazují aktuální větev, upstream a rozdíl proti němu
- feature branch obsahuje související commity, ne několik nesouvisejících úkolů
- pravidla pro merge, rebase a force push jsou týmu známá
- přístupy, branch protection a práce se secrets jsou řešeny mimo samotný název větve
Časté otázky
Větev bez častých záměn
Je větev kopie projektu?
Ne. Větev je pohyblivý odkaz na commit. Git sdílí společnou historii a objekty; při práci se jen přepíná obsah pracovní kopie podle vybrané větve.
Co je HEAD?
HEAD obvykle ukazuje na aktuálně checkoutnutou lokální větev a přes ni na její poslední commit. V detached HEAD může ukazovat přímo na konkrétní commit.
Je origin/main totéž co můj lokální main?
Ne. origin/main je remote-tracking reference uložená lokálně jako poslední známý stav remote. Lokální main je samostatná větev; rozdíl uvidíš například po fetchi a ve statusu.
Chrání feature branch citlivý obsah?
Ne. Větev není bezpečnostní hranice. Secret musíš chránit správným řízením přístupu, necommitováním a případnou okamžitou rotací po úniku.
Jak pracuji se změnami v praxi
Dobré workflow spojuje malé změny, review a ověřování.
V hlavních znalostech popisuji práci s PHP aplikacemi, testováním a udržitelnou architekturou, které na kvalitní práci s větvemi navazují.