Vetvy sú spôsob, ako viesť niekoľko línií práce v jednom projekte súbežne, bez toho, aby si prekážali. V tomto článku pochopíte, čo sú vetvy a načo slúžia, naučíte sa ich vytvárať, prepínať medzi nimi, zlučovať zmeny a pokojne riešiť konflikty pri zlúčení pomocou nástrojov IDE. Je to práve ten základ, ktorý potrebujete, aby ste rozumeli, čo robí Claude Code, keď pracuje s vaším repozitárom v samostatnej vetve.

Príklady a snímky rozhrania sa týkajú IDE JetBrains; názvy a umiestnenie akcií sa vo vašej verzii môžu líšiť. Na cvičenia použite samostatný cvičný repozitár. V pracovnom projekte dodržiavajte jeho pravidlá pre vetvy, commity a odosielanie zmien.

Čo sú vetvy a načo slúžia

Vetva dáva meno samostatnej línii commitov. Vytvorenie vetvy nekopíruje priečinok projektu a neuloží necommitnuté súbory. V bežnom pracovnom priečinku Git pri prepnutí zmení súbory podľa vybranej vetvy; nedokončené zmeny sa môžu presunúť s vami alebo prepnutiu zabrániť.

Horná línia je main, dolná feature/new-idea. Po zlúčení main ukazuje na M, ktorý má dvoch rodičov: E a D.ABEMCD
Horná línia je main, dolná feature/new-idea. Po zlúčení main ukazuje na M, ktorý má dvoch rodičov: E a D.

Z hlavnej vetvy main odbočuje nová vetva feature/new-idea pre samostatnú líniu vývoja. Po dokončení práce sa zlúči späť do main.

Predstavte si, že chcete niečo vážne prerobiť vo svojom projekte alebo urobiť riskantný experiment. Ako by ste postupovali bez Gitu? Pravdepodobne by ste celý projekt skopírovali do nového priečinka a pracovali v ňom. Ak by sa vám výsledok páčil, preniesli by ste ho do hlavného priečinka. Ak nie, kópiu by ste jednoducho zmazali.

Analógia s kópiou je užitočná na pochopenie samostatných variantov práce, ale technicky je vetva ukazovateľ na commit. Ukážme si to na príklade knihy:

  1. máte hotový rukopis (to je vaša hlavná vetva main);
  2. chcete napísať alternatívny záver (vytvoríte novú vetvu, napríklad feature/new-idea);
  3. píšete nový záver bez toho, aby ste sa dotkli hlavného textu rukopisu (pracujete v novej vetve);
  4. ak bude nový záver lepší, nahradíte ním starý (urobíte zlúčenie vetiev - merge);
  5. starý koncept s nepotrebným záverom môžete zmazať (odstránite vetvu).
Súvis s Claude Code

Požiadajte Claude Code, aby najprv ukázal vetvu a existujúce zmeny. Samostatná vetva sa vytvára, ak to zodpovedá pravidlám projektu. Uložené commity dávajú bod návratu; samotné zmazanie mena vetvy neruší úpravy súborov a neobnoví pôvodný stav.

Vytvorenie novej vetvy a práca v nej

Krok 1. Otvorte ponuku správy vetiev.

Na hlavnom paneli nástrojov, vedľa názvu projektu, sa nachádza widget zobrazujúci meno aktuálnej vetvy (predvolene main). Kliknite naň a vyberte + New Branch.

Widget vetiev v ľavom hornom rohu

Krok 2. Meno novej vetvy.

Dobrá prax je pomenovať vetvy podľa úlohy, ktorú riešite. Napríklad feature/add-usage-examples.

Okno vytvorenia novej vetvy

Ak je pri vytváraní vybrané Checkout branch, IDE prepne na novú vetvu. Skontrolujte jej meno vo widgete pred úpravou súborov.

Krok 3. Vykonajte a commitnite zmeny.

Pridajte do README.md časť s príkladmi použitia. Prezrite si zmeny a urobte commit bežným spôsobom: v histórii novej vetvy sa objaví uložený snímok.

Commit v novej vetve
Súvis s Claude Code

Keď Claude Code navrhne urobiť commit, robí presne toto - zaznamená aktuálne zmeny ako bod, ku ktorému sa neskôr môžete vrátiť. Pred súhlasom si prečítajte správu commitu: opisuje, čo sa mení, a ľahko sa dá opraviť.

Prepínanie medzi vetvami

Vaše zmeny s príkladmi použitia sú teraz bezpečne uložené vo vetve feature/add-usage-examples. Vráťme sa do hlavnej vetvy main a pozrime sa, čo je tam.

Krok 1. Znova kliknite na widget s menom aktuálnej vetvy v ľavom hornom rohu.

Krok 2. V zozname Local alebo Recent vyberte vetvu main a v zobrazenom podmenu kliknite na Checkout.

Prepnutie na vetvu main

Krok 3. Skontrolujte výsledok.

Hneď ako prepnete, otvorte súbor README.md. Uvidíte, že časť s príkladmi použitia v ňom chýba - zostala v inej vetve. Takto môžete pracovať na novej funkcionalite bez toho, aby ste sa dotkli stabilnej verzie vo vetve main.

Súbor bez zmien z inej vetvy

Zlúčenie vetiev

merge spája históriu vybranej vetvy s aktuálnou. Ak sa main od vzniku novej vetvy neposunula, je možný fast-forward: main sa presunie k C3 bez nového commitu. Ak sa línie rozišli, bežné zlúčenie vytvorí commit s dvoma rodičmi.

main sa presúva z C2 na C3 bez nového commituC1C2C3
main sa presúva z C2 na C3 bez nového commitu

V ukázanom lineárnom prípade sa main môže presunúť k C3. Vetva feature/add-usage-examples zatiaľ tiež ukazuje na C3; jej meno netreba pre zlúčenie mazať.

Takže ste dokončili prácu na svojej úlohe vo vetve feature/add-usage-examples a chcete tieto zmeny pridať do hlavného projektu.

Krok 1. Prepnite sa na cieľovú vetvu.

Uistite sa, že ste v tej vetve, KAM chcete pridať zmeny. V našom prípade je to main.

Krok 2. Vykonajte zlúčenie.

Znova kliknite na widget správy vetiev. V zozname vyberte vetvu, ODKIAĽ chcete zobrať zmeny (feature/add-usage-examples), a v podmenu vyberte Merge 'feature/add-usage-examples' into 'main'.

Vykonanie zlúčenia vetiev

Krok 3. Skontrolujte výsledok.

Teraz sa v súbore README.md vo vetve main objavila vaša nová časť s príkladmi. Úspešne ste spojili svoju prácu s hlavnou verziou projektu.

Úspešné zlúčenie

Konflikty pri zlúčení

Konflikt znamená, že Git nedokázal automaticky spojiť zmeny. Častým prípadom sú odlišné úpravy tých istých riadkov; býva to aj zmazanie súboru v jednej vetve a jeho zmena v druhej. Riešenie sa vyberá podľa požiadaviek na výsledok.

A práve tu sa ukáže celá sila zabudovaných nástrojov vašej IDE (CLion alebo IntelliJ IDEA). Riešiť konflikty v termináli nie je práve zábava, ale zabudovaný nástroj trojstranného zlúčenia (3-way merge) z toho urobí prehľadný a jednoduchý proces.

Dve vetvy so spoločným predkom C1C1C2C3
Dve vetvy so spoločným predkom C1

Od spoločného predka C1 pribudli v oboch vetvách nové commity. Samotné rozvetvenie histórie konflikt negarantuje: vzniká, ak Git nedokáže automaticky zosúladiť zmeny. V cvičení nižšie rôzne texty nahrádzajú jeden pôvodný riadok.

Simulujme konflikt:

  1. uistite sa, že ste vo vetve main a nemáte necommitnuté zmeny ani nové súbory v okne Commit;
  2. vytvorte novú vetvu feature/new-title, ale zatiaľ sa na ňu neprepínajte. Uistite sa, že políčko Checkout branch nie je začiarknuté;
  3. teraz, keď ste vo vetve main, zmeňte prvý riadok v README.md na "My Awesome Project" a urobte commit;
  4. prepnite sa na vetvu feature/new-title. Uvidíte, že prvý riadok v README.md tu zostal starý - je to stav súboru v čase vytvorenia vetvy. Zmeňte ten istý riadok na "My Super Project" a urobte commit;
  5. vráťte sa do vetvy main a vykonajte zlúčenie s feature/new-title.

Teraz Git zistí, že obe histórie boli zmenené na tom istom mieste. Zobrazí vám okno na riešenie konfliktu (Merge Conflicts).

Okno zistenia konfliktov

Kliknite na tlačidlo Merge, aby ste otvorili nástroj na riešenie konfliktov. Čo tu vidíte:

  • vľavo (Your changes) - verzia súboru z vašej aktuálnej vetvy (kam zlučujete, main);
  • vpravo (Changes from branch) - verzia súboru z vetvy, ktorú zlučujete;
  • v strede (Result) - výsledná verzia súboru, ktorú musíte zostaviť ručne.
Trojstranné okno riešenia konfliktov

Môžete klikať na šípky >> alebo << (alebo na krížiky na zrušenie), aby ste prijali celý jeden alebo druhý variant. Alebo môžete jednoducho napísať správny text priamo v strednom paneli.

Skontrolujte výsledok v strednom paneli a kliknite na Apply alebo príslušné tlačidlo dokončenia. Potom sa pozrite na stav Gitu: ak zlúčenie ešte nie je zaznamenané, vykonajte commit cez IDE. Vyriešenie riadkov konfliktu a dokončenie merge sú rôzne kroky. Skontrolujte správanie výsledného kódu.

Súvis s Claude Code

Ak konflikt vznikne pri práci s Claude Code, nie je to zlyhanie: Claude sa môže zastaviť a požiadať o vašu pomoc alebo navrhnúť, ako zmeny rozmotať. Rieši sa tým istým trojstranným nástrojom IDE ako bežný konflikt.

Prečo niekedy konflikt nevznikne

Ak v cvičení konflikt nevznikne, skontrolujte, z ktorého commitu je vytvorená druhá vetva a či obe strany naozaj odlišne nahradili ten istý riadok. Git dokáže automaticky spájať kompatibilné úpravy aj vo vetvách, ktoré sa rozišli. Iný variant je lineárna história, v ktorej je možný fast-forward:

Príklad:

  1. máte nejaký commit vo vetve main (povedzme C1);
  2. urobíte nový commit vo vetve main s textom "My Awesome Project". Vetva main teraz ukazuje na commit C2;
  3. vytvoríte vetvu feature/new-title z aktuálnej pozície main - nová vetva tiež začína commitom C2;
  4. urobíte commit vo vetve feature/new-title s textom "My Super Project". Táto vetva sa posunie vpred a ukazuje na commit C3;
  5. vrátite sa do vetvy main (ktorá je stále na commite C2) a zlúčite feature/new-title.

Git vidí, že vetva main je priamym predkom vetvy feature/new-title: v histórii main nepribudli žiadne nové commity, kým ste pracovali v inej vetve. Preto jednoducho pretočí ukazovateľ main vpred až na commit C3, bez konfliktov.

main sa presúva z C2 na C3 bez nového commituC1C2C3
main sa presúva z C2 na C3 bez nového commitu

História main pokračuje históriou feature/new-title bez rozvetvenia, takže Git jednoducho pretočí main vpred - konflikt nevzniká.

Prezeranie histórie zmien

Aby ste lepšie rozumeli tomu, čo sa deje vo vašom projekte, je užitočné pozrieť sa na jeho históriu.

Otvorte okno nástroja Git (zvyčajne ikona na ľavom bočnom paneli alebo v dolnej časti okna IDE) a vyberte kartu Log alebo Show Git Log na paneli nástrojov Git. Uvidíte grafické znázornenie všetkých vašich vetiev a commitov. Pomôže vám to prehľadne sledovať, ktorá vetva sa od ktorej odčlenila a kde sa zlúčili.

Okno logov Gitu

Tu môžete kliknúť na ľubovoľný commit a zistiť, aké zmeny obsahuje, kto a kedy ho urobil. Je to skutočný stroj času pre váš kód.

Súvis s Claude Code

Zmeny Claude Code sa do tejto histórie dostanú, keď budú zaznamenané bežnými commitmi. V Git Log ich vidíte rovnako ako svoje: môžete otvoriť ľubovoľný commit a overiť, čo presne sa zmenilo.

Ako to funguje v spojení s Claude Code

Teraz, keď rozumiete vetvám, je jednoduchšie čítať akcie Claude Code, keď pracuje s vaším repozitárom. Toto s touto technológiou robí za vás a na toto sa oplatí dávať pozor:

  • vytvára samostatnú vetvu, ak to predpokladá úloha a pravidlá projektu;
  • v kľúčových bodoch navrhuje commit - vy si prečítate diff a rozhodnete, či ho prijať alebo upraviť;
  • pomáha nájsť potrebný uložený commit a vybrať spôsob návratu, pričom zohľadní necommitnuté zmeny;
  • pri konflikte zlúčenia môže požiadať o vašu pomoc - rieši sa tým istým nástrojom IDE;
  • vie pripraviť a okomentovať pull request (PR - návrh na začlenenie vetvy do hlavnej, napríklad cez GitHub CLI).
Súvis s Claude Code

Skôr než súhlasíte, pozrite si diff - obzvlášť keď Claude navrhne zmazať súbory alebo vykonať merge. Takto vždy viete, čo presne sa dostane do histórie projektu.

Predchádzajúci článok: Každodenná práca s Gitom · Nasledujúci článok: Pull request od vytvorenia po zlúčenie