Spolu s Claude Code pripravujete prehľad lokalizácií: práve robíte vyhľadávanie v zozname a práca je zhruba v polovici. Zrazu zistíte, že v uloženej verzii stránky je nesprávny popisok pod nadpisom. Oprava zaberie dve minúty, no chcete ju skontrolovať samostatne, nie popri nedokončenom vyhľadávaní.
Ukážeme si, ako dať druhej úlohe vlastný pracovný priečinok v tom istom repozitári, spustiť v ňom samostatnú reláciu Claude Code a napokon uložiť výsledok tak, aby sa nič nepomiešalo. Druhý priečinok sám osebe prácu neurýchli. Má jediný účel: zabrániť tomu, aby sa obe úlohy miešali v rovnakej sade súborov.
Kedy jeden pracovný priečinok nestačí
Ukážkový projekt locale-guide je stránka v prehliadači so zoznamom lokalizácií. V jeho priečinku práve riešite úlohu A: vyhľadávanie vo vetve feature/search, kde je jedna nedokončená zmena:
git status --short
M app.jsO túto zmenu nemôžete prísť, no za hotový výsledok ju zatiaľ považovať nemožno. Potom sa objaví úloha B, ktorá s vyhľadávaním nesúvisí: opraviť popisok v index.html vo verzii uloženej vo vetve main.
Prvá myšlienka býva otvoriť druhý terminál a spustiť v tom istom priečinku ďalší claude. Rozhovory budú oddelené, súbory však zostanú spoločné. Ak obaja agenti začnú meniť rovnaké miesta, zmeny sa môžu pomiešať. V našom jednoduchom príklade sú popisok a vyhľadávanie zatiaľ v rôznych súboroch, no obe relácie vidia ten istý rozpracovaný projekt. Aj pri prepnutí vetvy treba najprv vyriešiť existujúce zmeny.
Riešením je vyhradiť úlohe B vlastný pracovný priestor. Git na to ponúka ďalší pracovný priečinok toho istého repozitára, worktree. Claude Code má zas prepínač --worktree, ktorý taký priečinok pripraví a rovno v ňom spustí reláciu. Najprv si vysvetlíme princíp, potom prepínač.

Hneď na úvod: tento postup nie je povinný pre každú úlohu. Ak je pracovný strom čistý a zmena drobná, druhý priečinok prinesie len zbytočnú prácu. Úplne v poriadku je aj striedať úlohy v jednom priečinku.
Vetva, pracovný priečinok a relácia
Tieto tri pojmy sa ľahko pletú, pretože s nimi často pracujete naraz:
| Čo je to | Čo obsahuje | Kde sa nachádza |
|---|---|---|
| vetva | ukazovateľ na commit a líniu histórie | v repozitári, spoločná pre všetky pracovné priečinky |
| pracovný priečinok (worktree) | súbory, s ktorými práve pracujete, a zmeny pripravené na commit | na disku, každý priečinok má vlastné |
| relácia | rozhovor s agentom a jeho kontext | v Claude Code |
A to je aj odpoveď na otázku o druhom termináli: nová relácia oddelí rozhovor, nie súbory. Ak chcete oddeliť súbory, potrebujete druhý pracovný priečinok.
História a vetvy sú spoločné: oba priečinky patria do toho istého repozitára. Spoločné sú predvolene aj nastavenia Gitu, hoci Git podporuje samostatné nastavenia pre worktree. Pracovné súbory a zmeny pripravené na commit má však každý priečinok vlastné. Necommitnuté vyhľadávanie z prvého priečinka sa v druhom samo neobjaví.
Rovnakú vetvu zvyčajne nemožno súčasne otvoriť v dvoch priečinkoch. Git to odmietne a vypíše priečinok, v ktorom sa už používa:
fatal: 'fix/label' is already used by worktree at '/projects/locale-guide-label'Vyberte východiskový stav
V ukážke už repozitár existuje a obsahuje aspoň jeden commit, lokálnu vetvu main aj vetvu feature/search. Obe zatiaľ ukazujú na ten istý commit a vyhľadávanie existuje len ako necommitnutá zmena. Pozrime sa na východiskový stav tromi príkazmi v hlavnom priečinku:
git status --short # čo teraz nie je uložené
git branch --show-current # aktuálna vetva hlavného priečinka
git log -1 --oneline main # posledný commit vo vetve main M app.js
feature/search
d5ec405 add locale guide pageNa samostatnú opravu popisku použijeme vetvu main: úloha B potrebuje uloženú verziu stránky, nie aktuálny stav vyhľadávania. Ide o lokálnu vetvu main vo vašom počítači. Nemusí sa zhodovať s rovnako pomenovanou vetvou na vzdialenom repozitári a príkaz z neho nič nesťahuje.
Ak druhá úloha potrebuje výsledok prvej, najskôr určte, ktorý uložený commit má použiť, a priečinok vytvorte z neho. Bežný príkaz git worktree add neprenesie necommitnuté zmeny automaticky. Samostatné kopírovanie súborov či ďalšie nástroje na prípravu prostredia sú iné kroky.
Vytvorte druhý pracovný priečinok
V priečinku locale-guide spustite:
git worktree add -b fix/label ../locale-guide-label mainPríkaz čítajte zľava doprava: vytvoriť novú vetvu fix/label, umiestniť pracovný priečinok vedľa na cestu ../locale-guide-label a ako východiskový bod použiť main. Posledný argument určuje základ jednoznačne. Ak ho vynecháte, Git v tomto príkaze použije aktuálny commit HEAD vetvy feature/search, nie však necommitnuté zmeny. V našom príklade obe vetvy ukazujú na rovnaký commit, takže súbory by boli rovnaké. Po commitoch s vyhľadávaním už výber základu ovplyvní výsledok. Git vypíše približne toto:
Preparing worktree (new branch 'fix/label')
HEAD is now at d5ec405 add locale guide pageTeraz skontrolujte výsledok. Prepínač -C povie Gitu, aby spustil príkaz v zadanom priečinku bez toho, aby ste doň museli prejsť:
git worktree list
git -C ../locale-guide-label branch --show-current
git -C ../locale-guide-label status --shortUkážkový výstup s fiktívnymi cestami. U vás budú iné:
/projects/locale-guide d5ec405 [feature/search]
/projects/locale-guide-label d5ec405 [fix/label]
fix/labelZoznam zobrazuje oba priečinky aj vetvu priradenú ku každému z nich. Hlavný zostal vo vetve feature/search s rozpracovaným vyhľadávaním, nový je vo vetve fix/label. Príkaz status v druhom priečinku nič nevypísal - je čistý, presne to sme chceli.
Ak cestu alebo názov vetvy nemožno použiť, Git to odmietne a vysvetlí dôvod, napríklad already exists alebo is already used by worktree. Skontrolujte zoznam worktree, vetvy a obsah daného priečinka. Môže ísť o vaše predošlé spustenie alebo inú úlohu. Nepridávajte naslepo --force: najprv zistite, čo už existuje a či to potrebujete.
Otvorte druhú úlohu v Claude Code
Otvorte locale-guide-label v samostatnom okne IDE alebo doň prejdite v novom termináli a spustite odtiaľ claude. Nová relácia o úlohe A nič nevie, a to je v poriadku - potrebuje len vlastný kontext:
Očakávaný priečinok: locale-guide-label, vetva: fix/label.
Najprv over skutočný priečinok a vetvu. Ak sa nezhodujú, zastav sa.
Prečítaj index.html.
Zmeň popisok pod nadpisom na "Zoznam lokalizácií: kód, jazyk a krajina".
V súbore nič iné nemeň a ukáž mi zmenu.Skôr než Claude Code zmení súbory, požiadajte ho, aby uviedol pracovný priečinok a aktuálnu vetvu, a odpoveď porovnajte s tým, čo ste zamýšľali. Agent spustený v nesprávnom priečinku pracuje rovnako sebavedomo ako v správnom.
Po zmene spustite v oboch termináloch git status a git diff. V druhom priečinku sa zmenil iba popisok v súbore index.html, v prvom zostala pôvodná zmena v app.js. Samotný výpis status ukáže názvy súborov, no nepotvrdí, že ich obsah zostal zachovaný. Ak chcete presné porovnanie, počas kontroly pozastavte prácu na vyhľadávaní. Hlavný priečinok kontrolujte v jeho termináli; nežiadajte agenta z izolovanej relácie, aby tam prešiel. Stránku otvorte priamo z druhého priečinka, inak uvidíte pôvodný popisok.
Existuje aj kratšia cesta. Príkaz claude --worktree label-fix sám vytvorí pracovný priečinok a spustí v ňom reláciu. Podľa aktuálnej dokumentácie sa priečinok vytvorí v repozitári, v priečinku .claude/worktrees/label-fix/, vetva dostane názov worktree-label-fix a základom bude predvolená vetva vzdialeného repozitára (zvyčajne main), nie váš aktuálny commit. Ak vzdialený repozitár nie je nastavený, základom bude aktuálny lokálny commit. Nie je to teda to isté ako výslovne zadaná vetva main v príkaze vyššie, hoci v jednoduchom projekte býva výsledok často rovnaký. Predvolené správanie sa dá zmeniť nastavením; podrobnosti si overte v dokumentácii svojej verzie.
Prepínač sa hodí, keď vám tento základ vyhovuje a chcete rýchlo vytvoriť samostatné miesto pre úlohu. Nespúšťajte ho v už vytvorenom priečinku, inak vznikne ďalší. Cestu .claude/worktrees/ sa oplatí pridať do súboru .gitignore, inak sa obsah nových priečinkov začne v hlavnom priečinku zobrazovať ako nesledované súbory.
Čo zostáva spoločné
Samostatný priečinok oddeľuje menej vecí, než sa na prvý pohľad zdá:
| Oddelené | Spoločné | Vôbec sa neoddeľuje |
|---|---|---|
| pracovné súbory, príprava na commit, aktuálna vetva priečinka | história, všetky vetvy, nastavenia repozitára, adresa vzdialeného repozitára | porty lokálneho servera, externá databáza, cloudové služby, prístup procesu k zvyšku disku |
Najdôležitejší je tretí stĺpec, na ktorý sa často zabúda. Worktree sa týka súborov Gitu, nie izolácie počítača. Dva lokálne servery nemôžu používať rovnaký port a požiadavky z oboch priečinkov zamieria do tej istej externej databázy, ak ju máte nastavenú. Ani kontroly, ktoré Claude Code vykonáva v samostatnom priečinku, z neho neurobia izolované prostredie pre celý systém.
Druhý priečinok dostane súbory zvoleného commitu. Ak sa závislosti a lokálne nastavenia neukladajú do Gitu, prostredie zvyčajne treba pripraviť samostatne; ďalšie nástroje to môžu automatizovať. Súbor .env nekopírujte naslepo: rovnaké prihlasovacie údaje môžu nasmerovať oba procesy na tú istú službu. Náš statický prehľad nepotrebuje server ani tajné údaje - stránku otvoríte ako súbor.
Uložte a preneste výsledok
V priečinku B skontrolujte popisok v prehliadači, pozrite si git diff a commitnite iba potrebný súbor:
git add index.html
git diff --cached
git commit -m "fix: correct locale list label"Pred commitom sa uistite, že ste pripravili iba požadovanú zmenu. Ak príkaz git diff --cached ukáže aj iné zmeny, najprv ich skontrolujte.
Commit sa uložil do spoločného repozitára a z hlavného priečinka ho už vidíte. Sám sa však nedostal ani do vetvy main, ani do feature/search: zostáva vo vlastnej vetve, kým sa ho nerozhodnete zlúčiť.
Výsledok prenášajte až vtedy, keď je úloha A dokončená alebo aspoň uložená a hlavný priečinok je čistý. Uprostred nedokončeného vyhľadávania neprepínajte na vetvu main; najprv vyriešte rozpracovanú úlohu. Keď je hlavný priečinok čistý:
git checkout main
git merge fix/labelFast-forward
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)Tento výstup zodpovedá situácii, keď sa vetva main po vytvorení fix/label nezmenila. Ak Git oznámi konflikt, zastavte sa a vyriešte ho podľa pravidiel zlučovania; tejto samostatnej téme sa venuje článok "Vetvy a zlúčenie v Gite". Po zlúčení stránku znova otvorte: popisok má byť nový a zoznam lokalizácií nezmenený. Vetva feature/search sa tým neaktualizovala. Pred pokračovaním vo vyhľadávaní samostatne rozhodnite, či do nej chcete preniesť opravu z main.
Odstráňte nepotrebný priečinok
Najprv v druhom priečinku ukončite reláciu a všetko, čo ste v ňom spustili. Potom skontrolujte, či v ňom nezostalo niečo potrebné:
git -C ../locale-guide-label status --short --ignoredZmenené a nové súbory uvidíte hneď; ignorované zobrazí prepínač --ignored. Práve v nich sa často nachádzajú lokálne nastavenia a poznámky. Keď sa uistíte, že výsledok je uložený v správnej vetve, odstráňte priečinok z hlavného:
git worktree remove ../locale-guide-label
git worktree listAk priečinok obsahuje zmenené sledované alebo nové neignorované súbory, Git ho zvyčajne odmietne odstrániť:
fatal: '../locale-guide-label' contains modified or untracked files, use --force to delete itNevykonávajte pokyn z chybovej správy ako prvý krok. Skontrolujte súbory a potrebné zmeny uložte. Po odstránení môžu byť necommitnuté údaje pomocou Gitu neobnoviteľné. Na odmietnutie ako na úplnú ochranu sa nespoliehajte: ignorované súbory sa môžu odstrániť aj bez prepínača --force, preto sme ich kontrolovali osobitne.
Je tu ešte jeden detail, na ktorom sa dá ľahko pomýliť. Príkaz Gitu odstráni pracovný priečinok, nie však vetvu - fix/label zostane v zozname príkazu git branch. To je užitočné: výsledok sa nestratil. Keď vetvu naozaj nepotrebujete a všetky potrebné zmeny ste zlúčili, odstráňte ju samostatne.
Keď ukončíte reláciu spustenú s prepínačom --worktree, Claude Code skontroluje priečinok. Ak v ňom nie sú zmeny ani nové commity a relácia nemá názov, priečinok aj vetvu odstráni bez opýtania. Ak v ňom niečo zostalo, opýta sa, či chcete priečinok ponechať alebo odstrániť. Odstránenie v tomto dialógu zmaže priečinok aj vytvorenú vetvu spolu so všetkým, čo obsahujú. Nie je to to isté ako príkaz Gitu vyššie. Ak chcete výsledok zachovať, vyberte "ponechať" a preneste ho sami.
Neodstraňujte priečinok mimo Gitu, napríklad cez správcu súborov. Repozitár ho bude naďalej považovať za existujúci a v zozname worktree zostane záznam o niečom, čo už neexistuje.
Ako pracovať na druhej úlohe v Claude Code
Celý postup má šesť krokov:
- pomenujte druhú úlohu oddelene od prvej a určte, z ktorého uloženého stavu má vychádzať;
- vytvorte pracovný priečinok s výslovne určeným základom alebo spustite
claude --worktree, ak vám vyhovuje predvolené nastavenie; - pred prvou zmenou overte cestu a vetvu v novom priečinku;
- poskytnite relácii kontext iba k tejto úlohe, bez histórie druhej;
- skontrolujte zmenu tam, kde ste ju urobili, a uložte výsledok;
- rozhodnite, či zmeny zlúčite, a až potom priečinok odstráňte.
Samostatný priečinok nekontroluje kód ani za vás neschvaľuje prácu. Každá úloha vďaka nemu pracuje s vlastnými súbormi. V našom príklade je prínos jasný: popisok sme samostatne opravili a skontrolovali, zatiaľ čo nedokončené vyhľadávanie zostalo v prvom priečinku.
Overte si, čo ste sa naučili
V druhom priečinku nie je necommitnuté vyhľadávanie. Pokazilo sa niečo?
Nie, tak to má byť. Priečinok vznikol z commitu vo vetve main, nie z aktuálnych súborov úlohy A. Necommitnuté zmeny zostávajú vo svojom priečinku.
V jednom priečinku sú otvorené dve relácie. Sú úlohy oddelené?
Oddelené sú rozhovory, súbory sú však spoločné. Zmeny sa môžu pomiešať, ak obe úlohy zasiahnu rovnaké miesta.
Commit vo vetve B je hotový, ale v main popisok nie je.
Tak to má byť: commit zostal vo vlastnej vetve. Ostatné vetvy nemení; na to je potrebné zlúčenie.
Druhý lokálny server sa nedá spustiť na tom istom porte.
Samostatný priečinok porty neoddeľuje. Spustite ho na inom porte.
Git odmietol odstrániť pracovný priečinok.
Prečítajte si dôvod: okrem neuložených súborov môže byť priečinok zamknutý alebo môže ísť o hlavný pracovný priečinok. Potrebné zmeny uložte a skontrolujte stav. Prepínač --force nepridávajte naslepo.
Ak si to chcete vyskúšať, vytvorte samostatný cvičný repozitár s niekoľkými commitmi. Založte dva priečinky, zmeňte text iba v druhom, skontrolujte oba a nepotrebný odstráňte. Nepotrebujete na to žiadne služby ani účty.
GO TO FULL VERSION