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.

  1. 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í.
  2. 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.
  3. Lokální commity Každý nový commit posune feature branch na novou špičku. Main se tím nemění.
  4. 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.
  5. 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í.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.