Git worktrees ir Claude Code — gilus nardymas. Terminalo lango stiliaus viršelis.

Git worktrees ir Claude Code: kaip dirbti su 5 agentais vienu metu (gilus nardymas)

claude-codediįrankiai

„Claude Code meistriškumo” cikle worktree’us pavadinome didžiausiu produktyvumo šuoliu — ir tai ne perdėta. Būtent worktree’ai leidžia laikyti atvirus 3–5 Claude vienu metu ir kiekvienam patikėti atskirą užduotį. Šis gilus nardymas — viskas, ką reikia žinoti nuo nulio iki pažengusio lygio.

Susiję: Claude Code meistriškumas (1/3): pagrindai · (2/3): technikos

Kas yra git worktree (ir kodėl ne tiesiog kelios kopijos)

Įprastai vienas git repozitorijus turi vieną darbinį katalogą — vieną failų rinkinį, vieną aktyvią šaką. Nori dirbti su kita šaka? Turi „persijungti” (git checkout), o tai reiškia, kad ankstesnis darbas iš akių dingsta.

Worktree — tai antras (trečias, penktas) darbinis katalogas, priklausantis tam pačiam repozitorijui. Kiekvienas turi savo šaką ir savo failus, bet visi dalijasi ta pačia git istorija. Skirtingai nei paprastas kopijavimas (cp -r ar antras git clone), worktree’ai:

Praktiškai tai reiškia: penkios izoliuotos darbo vietos, viena istorija, jokių konfliktų.

vienas
repozitorijus
  • auth-refactor dirba
  • klaida-102 laukia įvesties
  • nauja-funkcija dirba
  • analizė baigta
Kiekviena užduotis — atskiras worktree su savo Claude sesija. Jokių tarpusavio konfliktų.

Kodėl tai svarbu būtent Claude Code

Kai dirbi su vienu Claude langu, esi „butelio kaklelis” — kol jis dirba, tu lauki. Kai kiekviena užduotis turi savo worktree ir savo Claude sesiją, viskas sukasi lygiagrečiai: vienas taiso klaidą, antras rašo funkciją, trečias — testus. Tu tik peršoki prie to, kuriam šiuo metu reikia dėmesio.

Svarbiausia — sesijos nesikiša viena kitai. Kiekviena redaguoja savo failus savame kataloge, tad du Claude niekada nesugadins vienas kito darbo tuo pačiu metu.

1. Rankinis būdas — git worktree add

Baziniam supratimui verta bent kartą tai padaryti ranka. Susikuri worktree’ą iš main šakos ir jame paleidi Claude:

~/projektas
Naujas worktree atskiroje šakoje
git worktree add .claude/worktrees/auth-refactor origin/main
Preparing worktree (new branch 'auth-refactor')
HEAD is now at 4f2a1c9 …
Įeini ir paleidi Claude tame kataloge
cd .claude/worktrees/auth-refactor && claude

Įprasta susitarta vieta — .claude/worktrees/. Norint pamatyti visus esamus arba išvalyti nebereikalingus:

~/projektas
git worktree list
/projektas 4f2a1c9 [main]
/projektas/.claude/worktrees/auth-refactor 9c1d2e0 [auth-refactor]
Baigus — pašalini worktree'ą
git worktree remove .claude/worktrees/auth-refactor
git worktree prune # išvalo likučius

2. Įmontuotas palaikymas — --worktree vėliava

Rankinis būdas geras suprasti, bet kasdien to nereikia. Claude Code turi įmontuotą worktree palaikymą — --worktree vėliava pati sukuria izoliuotą worktree ir jame paleidžia sesiją:

terminalas
Claude pats sukuria ir pavadina worktree'ą
claude --worktree auth-refactor
Kartu su tmux — atskiras langas kiekvienai sesijai
claude --worktree auth-refactor --tmux

Vardą gali nurodyti pats arba leisti Claude sugalvoti automatiškai. Rezultatas tas pats — kelios lygiagrečios sesijos tame pačiame repozitorijuje be jokios trinties.

Desktop programoje dar paprasčiau: atidaryk Code skiltį ir pažymėk „worktree” langelį — nauja sesija automatiškai gaus savo izoliuotą darbo vietą.

3. Greitkeliai — aliasai ir sesijų vardai

Komandos, kurios tai naudoja kasdien, susikuria trumpus shell aliasus, kad tarp worktree’ų peršoktų vienu klavišu:

~/.zshrc
alias za="cd ~/projektas/.claude/worktrees/a && claude"
alias zb="cd ~/projektas/.claude/worktrees/b && claude"
alias zc="cd ~/projektas/.claude/worktrees/c && claude"

Kai sesijų daug, verta jas pavadinti, kad nesusipainiotum — --name vėliava (arba automatinis pavadinimas po plan mode):

terminalas
claude --name "auth-refactor"
Perkelti sesiją tarp terminalo ir web
claude --teleport
Duoti prieigą prie papildomo katalogo (kitas repo)
claude --add-dir ../bendra-biblioteka

Populiarus modelis — laikyti vieną atskirą „analizės” worktree’ą žurnalų peržiūrai ir užklausoms, kad jis nemaišytų tavo kūrimo sesijų.

4. Subagentai izoliacijoje — dešimtys agentų vienu metu

Čia worktree’ai atsiskleidžia iki galo. Subagentai irgi gali dirbti kiekvienas savame worktree — tai idealu dideliems paketiniams pakeitimams ir migracijoms. Paprašius „naudok worktree’us savo agentams”, gali paleisti 10+ lygiagrečių agentų, kur kiekvienas nuo pradžios iki galo pasitikrina savo pakeitimą ir tik tada ruošia PR.

Agentą gali sukonfigūruoti, kad jis visada dirbtų izoliuotai — .claude/agents/ faile:

.claude/agents/worktree-worker.md
---
name: worktree-worker
model: haiku
isolation: worktree
---
Atlik pakeitimą, pasitikrink end-to-end ir paruošk PR.

Visą šitą orkestrą patogu stebėti Agent View rodinyje (paleistame iš šakninio katalogo) — jis sugrupuoja visas vykstančias sesijas pagal būseną.

5. Ne-git sistemos — worktree hooks

Jei komanda naudoja ne git, o Mercurial, Perforce, SVN ar jj, izoliaciją vis tiek gali pasiekti — per WorktreeCreate ir WorktreeRemove hooks. Juose aprašai, kaip tavo sistemoje sukuriama ir pašalinama darbo vieta:

.claude/settings.json
"hooks": {
"WorktreeCreate": [{
"command": "jj workspace add \"$(cat /dev/stdin | jq -r '.name')\""
}],
"WorktreeRemove": [{
"command": "jj workspace forget \"$(cat /dev/stdin | jq -r '.worktree_path')\""
}]
}

Taip tas pats lygiagretaus darbo modelis veikia nepriklausomai nuo versijų kontrolės sistemos.

Ką pradėti šiandien

  1. Susikurk vieną worktree’ą ranka (git worktree add), kad pajustum principą.
  2. Kitą dieną naudok claude --worktree — tegul viską padaro pats.
  3. Susidėk aliasus (za, zb, zc) trims lygiagrečioms sesijoms.
  4. Didelei migracijai išbandyk subagentus su isolation: worktree.
  5. Baigęs išvalyk — git worktree remove ir git worktree prune.

Worktree’ai — tai riba, ties kuria Claude Code nustoja būti „vienu pagalbininku” ir tampa komanda agentų, dirbančių tau lygiagrečiai. Pradėk nuo dviejų — ir greitai nebenorėsi grįžti prie vieno lango.

Serija: Claude Code meistriškumas — pradžia (1/3) →