# Git worktree Claude Codessa: rinnakkaiset istunnot

> Näin käytät --worktreea, .worktreeinclude-tiedostoa, worktree.baseRef-asetusta ja aliagenttien eristämistä. Erot haaroihin, worktree-työpuiden siivoaminen ja yleiset virheet.

Source: https://ailoot.ai/blog/fi/claude-code-git-worktree/
Canonical: https://ailoot.ai/blog/fi/claude-code-git-worktree/
Language: fi
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-045
Revision: sha256-1c659abc5218f665666d4309b36898c6b2e386bc03cce8044c5411e4a69fa435




[Käytännön tietoa Ailootin käytöstä on dokumentaatiossa](https://ailoot.ai/docs/).

## Mikä on git worktree Claude Codessa

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Git worktree on erillinen työhakemisto saman repositoryn toiselle haaralle. Komento `claude --worktree <name>` luo automaattisesti worktreen hakemistoon `.claude/worktrees/<name>/` ja käynnistää Claude Coden siinä. Kaksi päätettä → kaksi istuntoa → eri tiedostot levyllä, ei häiriöitä. Ominaisuus on käytettävissä suoraan Claude Code v2.0+:ssa. Sitä voi määrittää `.worktreeinclude`-tiedostolla salaisuuksia varten ja `worktree.baseRef`-asetuksella perushaaran valintaa varten.

</div>

Useiden agenttien käynnistäminen rinnakkain samassa kansiossa on vibe-koodauksen perusongelma vuoden 2026 tahdissa. Tekoälyagentit kirjoittavat koodia nopeammin kuin ihminen ehtii seurata, kuka käsittelee mitäkin. Ilman tiedostojen eristämistä kaksi rinnakkain samassa hakemistossa käynnistettyä Claude Code -istuntoa päätyy siihen, että toinen istunto kirjoittaa toisen työn päälle.

Git worktree ratkaisee ongelman tiedostojärjestelmän tasolla. Sinulla on yksi päähakemisto, jossa työskentelet. Komento `claude --worktree feature-auth` luo kansion `.claude/worktrees/feature-auth/` erilliselle haaralle ja käynnistää Claude Coden siellä. Tiedostot on eristetty. Toisen istunnon muutokset eivät näy toisessa ennen kuin yhdistät ne nimenomaisesti.

Anthropicin virallisessa dokumentaatiossa asia ilmaistaan näin:

<figure>
<blockquote>
<p>Kun kukin Claude Code -istunto suoritetaan omassa worktreessään, yhden istunnon muokkaukset eivät koskaan vaikuta toisen istunnon tiedostoihin. Voit kehittää ominaisuutta yhdessä päätteessä ja korjata virheen toisessa.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Vinkki itsearviointiin: jos olet joskus saanut commitin, jossa puolet tiedostoista oli jonkun muun työtä, tarvitset worktreen.

## Miten git worktree eroaa tavallisesta haarasta

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Tavallinen `git checkout` vaihtaa saman kansion työkopiota—vanhat tiedostot katoavat levyltä, kunnes palaat haaraan. `git worktree add` luo **toisen kansion** toiselle haaralle ensimmäisen rinnalle. Molemmat haarat ovat levyllä yhtä aikaa; siirryt niiden välillä yksinkertaisesti komennolla `cd`. Taustalla on yksi `.git`-repository, jolla on yhteinen historia ja etävarasto. Vain useita työkopioita.

</div>

Tavallinen Git-työnkulku: olet `main`-haarassa ja suoritat `git checkout feature-x`—Git korvaa työkopion tiedostot. Käynnissä oleva `npm run dev` hajoaa, koska `package.json` muuttui sen alta. Talletat commitoimattomat muutokset stashilla ja odotat, että IDE indeksoi tiedostot uudelleen. Vaihdat takaisin, ja kaikki korvataan taas, joten joudut tekemään uudestaan stashin ja popin.

Git worktree tarjoaa toisen vaihtoehdon: sen sijaan, että vaihtaisit **yhtä** kansiota haarojen välillä, luot **toisen** kansion toiselle haaralle. Komento `git worktree add ../project-feature-x feature-x` luo hakemiston `../project-feature-x/`, jossa ovat `feature-x`-haaran tiedostot. `main` jää alkuperäiseen kansioon, ja kehityspalvelin jatkaa toimintaansa.

| Parametri | `git checkout` -haara | `git worktree add` |
|----|----|----|
| Työkopion tiedostot | Korvataan | Näkyvät uudessa kansiossa |
| Rinnakkainen työskentely kahdella haaralla | Ei | Kyllä |
| Commitoimattomat muutokset | Tarvitsee `git stash` -komennon | Ei toimenpiteitä |
| Haaran vaihtamisen nopeus | Riippuu eron koosta | Pelkkä `cd` |
| Levytila | 1× | N× (yksi kopio tiedostoista haaraa kohti) |

Aiemmin Claude Coden worktree-tila piti ottaa käyttöön manuaalisesti: `git worktree add`, sitten `cd`, sitten `claude`—ja sama piti toistaa jokaisessa päätteessä. `--worktree`-valitsin (myös `-w`) hoitaa kaikki kolme yhdellä komennolla.

## Käynnistä ensimmäinen rinnakkainen istunto: `--worktree`-valitsin

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Komento `claude --worktree feature-auth` luo worktreen hakemistoon `.claude/worktrees/feature-auth/`, luo haaran `worktree-feature-auth` lähteestä `origin/HEAD` ja käynnistää Claude Coden siellä. `git worktree add`- tai `cd`-komentoa ei tarvitse suorittaa manuaalisesti. Toista komento viereisessä päätteessä eri nimellä, niin saat kaksi itsenäistä istuntoa. Jos jätät nimen pois (`claude --worktree`), Claude luo satunnaisen nimen, kuten `bright-running-fox`.

</div>

Yksinkertainen esimerkki. Avaa ensimmäinen pääte projektin juuressa:

```bash
claude --worktree feature-auth
```

Claude Code tekee kolme asiaa:

1. Luo hakemiston `.claude/worktrees/feature-auth/`, jossa on tilannevedos `origin/HEAD`-haarasta (yleensä oletushaarastasi).
2. Luo uuden `worktree-feature-auth`-haaran.
3. Käynnistää istunnon tässä kansiossa.

Avaa toinen pääte saman repositoryn juurikansiossa:

```bash
claude --worktree bugfix-123
```

Valmista. Kaksi Claude Code -istuntoa, eri tiedostot levyllä, eri Git-haarat. Jos kirjoitat autentikoinnin ensimmäisessä ja korjaat epäonnistuvan testin toisessa, ne eivät fyysisesti voi häiritä toisiaan.

Jos et halua kirjoittaa nimeä, Claude keksii sellaisen:

```bash
claude --worktree
# → luo esimerkiksi hakemiston .claude/worktrees/bright-running-fox/
```

Vinkki Gitin aloittelijoille: lisää `.claude/worktrees/` tiedostoon `.gitignore`. Muuten `git status` näyttää päähakemistossa kaikkien worktreeiden sisällön seuraamattomina tiedostoina:

```
# .gitignore
.claude/worktrees/
```

Vältä tätä sudenkuoppaa: ennen ensimmäistä `--worktree`-käynnistystä uudessa hakemistossa avaa se tavallisella `claude`-komennolla (ilman valitsinta) ja hyväksy työtilan luottamusdialogi. Jos et tee näin, valitsin epäonnistuu virheeseen “trust not accepted”—myös silloin, kun yhdistät sen headless-tilan `-p`-valitsimeen.

## Missä worktreet sijaitsevat ja miten löydät ne

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Oletusarvoisesti kaikki worktreet sijaitsevat hakemistossa `.claude/worktrees/<name>/` repositoryn juuren vieressä. Näet luettelon suorittamalla `git worktree list`. Siirry worktreeen manuaalisesti komennolla `cd .claude/worktrees/feature-auth`. Voit vaihtaa toiseen worktreeen Claude-istunnon sisällä pyytämällä sitä “vaihtamaan toiseen worktreeen”; se käyttää sisäänrakennettua EnterWorktree-työkalua. Vanha worktree pysyy koskemattomana levyllä.

</div>

Oletussijainti on kiinteä: `.claude/worktrees/<value>/` repositoryn juuressa. Jos projektisi on hakemistossa `~/dev/my-app/`, `feature-auth`-worktree sijaitsee hakemistossa `~/dev/my-app/.claude/worktrees/feature-auth/`.

Epätyypillisiin rakenteisiin (esimerkiksi jos haluat worktreen repositoryn ulkopuolelle) on `WorktreeCreate`-hook, josta kerrotaan lisää alla SVN:ää ja Mercurialia käsittelevässä osiossa.

Yhden Claude-istunnon sisällä voit siirtyä toiseen olemassa olevaan worktreeen. Sano keskustelussa: “siirry hakemistoon `.claude/worktrees/bugfix-123`”, niin Claude kutsuu `EnterWorktree`-työkalua. Nykyinen kansio pysyy koskemattomana—voit palata samalla tavalla.

Tavallinen Git-komento näyttää kaikki worktreet, myös päätyökopion ja manuaalisesti luodut worktreet:

```bash
git worktree list
```

Tuloste näyttää tältä:

```
/home/user/dev/my-app                  abc1234 [main]
/home/user/dev/my-app/.claude/worktrees/feature-auth  def5678 [worktree-feature-auth]
/home/user/dev/my-app/.claude/worktrees/bugfix-123    9876fed [worktree-bugfix-123]
```

## Kopioi `.env` ja salaisuudet: `.worktreeinclude`-tiedosto

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Worktree on tuore checkout. `.gitignore`-tiedostossa olevat tiedostot (`.env`, `.env.local`, paikalliset asetukset) puuttuvat uudesta kansiosta. Ilman niitä `npm run dev` tai `prisma db push` ei toimi. Projektin juuressa oleva `.worktreeinclude`-tiedosto käyttää `.gitignore`-syntaksia ja kertoo Claude Codelle, mitkä tiedostot kopioidaan automaattisesti jokaiseen uuteen worktreeen. Tiedosto huomioidaan `--worktree`-valitsimella, aliagenttien worktreeissä ja työpöytäsovelluksen istunnoissa.

</div>

Kun `--worktree` luo uuden kansion, se saa vain Git-repositoryyn commitatut tiedostot. API-avaimia sisältävä `.env` ja paikalliset asetukset sisältävä `.env.local` ovat `.gitignore`-tiedostossa, joten niitä ei ole worktreessä. Ensimmäinen `npm run dev` epäonnistuu virheeseen “MISSING DATABASE_URL”.

Itse tehty ratkaisu on kopioida `.env` manuaalisesti jokaisen `--worktree`-komennon jälkeen. Se toimii kerran ja unohtuu sitten. Anthropicin ratkaisu on projektin juuressa oleva `.worktreeinclude`-tiedosto, jossa luetellaan Gitin ohittamat tiedostot, jotka kopioidaan automaattisesti jokaiseen uuteen worktreeen.

Luo `.worktreeinclude`-tiedosto repositoryn juuressa:

```
.env
.env.local
config/secrets.json
```

Syntaksi on sama kuin `.gitignore`-tiedostossa. Voit käyttää glob-kuvioita:

```
.env*
*.local
config/*.json
.vscode/settings.json
```

Anthropic antaa selkeän säännön vahinkojen välttämiseksi:

<figure>
<blockquote>
<p>Tiedosto käyttää gitignore-syntaksia. Vain ne tiedostot kopioidaan, jotka vastaavat kuviota ja jotka myös ohitetaan Gitissä. Gitin seuraamia tiedostoja ei koskaan kopioida.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Toisin sanoen `.worktreeinclude`-tiedostolla ei voi vahingossa kopioida `package.json`-tiedostoa—se ei ole `.gitignore`-tiedostossa. Tiedostoon voi turvallisesti lisätä mitä tahansa kuvioita.

Sama `.worktreeinclude` toimii kolmessa tilassa: manuaalisessa `--worktree`-käytössä, aliagenttien automaattisissa worktreeissä (katso alla) ja Claude-työpöytäsovelluksesta käynnistetyissä istunnoissa.

## Worktree pull requestista koodikatselmointia varten

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Komento `claude --worktree "#1234"` hakee pull requestin \#1234 originista ja luo worktreen hakemistoon `.claude/worktrees/pr-1234/` PR-haaran kanssa. Voit antaa koko URL-osoitteen—`claude --worktree https://github.com/OWNER/REPO/pull/1234`. Hyödyllinen koodikatselmoinnissa: avaa PR omaan kansioonsa, niin Claude voi suorittaa testejä, lukea lokeja ja kirjoittaa kommentin samalla, kun päärepository pysyy koskemattomana.

</div>

Tavallinen koodikatselmoinnin tilanne: kollega lähetti PR:n; sinun täytyy tarkastaa koodi, suorittaa testit ja jättää kommentti. Tavallisella `git checkout pull/1234/head` -komennolla vaihdat työkopion taas ja keskeytät aktiivisen istuntosi.

`--worktree`-valitsimella tämä hoituu yhdellä komennolla:

```bash
claude --worktree "#1234"
```

Näin tapahtuu: Claude Code suorittaa komennon `git fetch origin pull/1234/head`, luo worktreen hakemistoon `.claude/worktrees/pr-1234/` ja ottaa PR-haaran käyttöön. Istunto käynnistyy. Voit heti pyytää sitä “lukemaan diffin, suorittamaan testit ja etsimään loogisia virheitä”—Claude työskentelee, kun taas pääistuntosi haarassa `main` jatkaa toimintaansa.

Vaihtoehtoinen syntaksi on koko pull request -URL-osoite:

```bash
claude --worktree https://github.com/OWNER/REPO/pull/1234
```

Oikeassa projektissa voit yhdistää `claude --worktree "#N"` -komennon omaan koodikatselmointi-aliagenttiin ja saada automaattisen katselmoinnin parissa minuutissa. Käynnistä se taustalla, jatka työskentelyä pääikkunassa ja palaa tulokseen komennolla `claude agents`.

## Perushaara: `worktree.baseRef` arvolla `fresh` tai `head`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Oletusarvoisesti worktree-haara luodaan lähteestä `origin/HEAD`—etävaraston uusimmasta synkronoidusta commitista. Tämä on turvallinen ja “puhdas” lähtökohta. Jos haluat worktreen sisältävän paikalliset, pushaamattomat commitit, aseta asetuksissa `worktree.baseRef: "head"`. HEAD tarkoittaa committia; committoimattomat seurattujen tiedostojen muokkaukset jäävät alkuperäiseen työkopioon ja vaativat erillisen, nimenomaisen siirron. Tämä on hyödyllistä, kun aliagentin pitää työskennellä nykyisen ominaisuutesi pohjalta vaihtamatta main-haaraan. Hyväksytyt arvot ovat vain `fresh` ja `head`; mielivaltaisia ref-arvoja ei tueta.

</div>

Oletusarvo on, että jokainen uusi worktree aloittaa lähteestä `origin/HEAD`. Etuna on puhdas lähtökohta, joka vastaa varmasti sitä, mitä CI näkee. Haittana on se, etteivät commitoimattomat muutokset tai useat paikalliset commitit nykyisellä haarallasi etävaraston version jälkeen sisälly uuteen worktreeen.

Jos haluat aloittaa worktreen nykyisestä paikallisesta HEAD-commitista, lisää tämä tiedostoon `.claude/settings.json` (tai globaaleihin asetuksiin):

```json
{
  "worktree": {
    "baseRef": "head"
  }
}
```

Nyt `claude --worktree experimental-feature` aloittaa nykyisestä paikallisesta `HEAD`-commitista. Tästä on hyötyä, kun ominaisuudestasi on jo paikallisia committeja, joita ei ole pushattu. Committoimattomat seurattujen tiedostojen muokkaukset eivät sisälly mukaan. Jos aliagentti tarvitsee niitä, säilytä ja siirrä tarvittavat muutokset erikseen ja tarkista kohteen diffi. Älä sekoita siirtoa `.worktreeinclude`-tiedostoon, joka käsittelee Gitin ohittamia paikallisia tiedostoja.

Asetus hyväksyy täsmälleen kaksi arvoa: `"fresh"` (= `origin/HEAD`) ja `"head"` (= paikallinen HEAD). Mielivaltaisia ref-arvoja, kuten `"feature-branch"` tai commit-hashia, ei voi antaa—tämä on tarkoituksellinen rajoitus vaihtoehtojen yhdistelmien räjähdysmäisen kasvun estämiseksi.

## Eristä aliagentit automaattisesti: `isolation: worktree`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Claude Coden aliagentti on erikoistunut agentti, joka suorittaa yhden tehtävän (koodikatselmointi, refaktorointi, tutkimus). Jos käynnistät useita aliagentteja rinnakkain yhdestä istunnosta, ne työskentelevät oletusarvoisesti samassa kansiossa ja voivat kirjoittaa toistensa tiedostojen päälle. Lisää aliagentin frontmatter-määritykseen `isolation: worktree`, niin jokainen saa väliaikaisen worktreen, joka poistetaan siististi lopuksi, jos agentti ei ole committanut mitään.

</div>

Kun pyydät Claudea “käynnistämään kolme aliagenttia: yksi lukee tietokantaa, toinen tarkastelee APIa ja kolmas tarkistaa testit”, kaikki kolme työskentelevät oletusarvoisesti työkopiossasi. Jos edes kaksi niistä kirjoittaa samaan tiedostoon yhtä aikaa, syntyy ristiriita. Ratkaisuna on antaa kullekin oma worktree automaattisesti.

Menetelmä 1: pyydä sanallisesti. Kirjoita Claude-keskusteluun:

```
Käytä agenteillesi worktree-työpuita.
```

Claude ottaa eristyksen käyttöön kaikille tämän istunnon myöhemmille aliagenteille.

Menetelmä 2: määritä se nimenomaisesti aliagentin määrityksessä. Lisää kenttä aliagentin tiedoston frontmatter-osiolle (esimerkiksi `.claude/agents/code-reviewer.md`):

```yaml
---
name: code-reviewer
description: Reads the diff and writes code review comments
isolation: worktree
---

Olet huolellinen tarkastaja. Lue diff ja etsi logiikkavirheitä...
```

Nyt jokainen tämän aliagentin käynnistys saa väliaikaisen worktreen hakemistoon `.claude/worktrees/`. Jos aliagentti ei kirjoittanut mitään, kansio poistetaan automaattisesti sen valmistuttua. Jos muutoksia ei ole commitoitu, Claude kysyy, säilytetäänkö vai poistetaanko ne.

Aliagenttien worktreeiden perushaara on sama kuin `--worktree`-valitsimessa: oletusarvoisesti `origin/HEAD`; kun `worktree.baseRef: head`, paikallinen `HEAD`.

## Päätösmatriisi: worktree, `/bg`, aliagentti vai Agent View

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Neljä Claude Code -mekanismia, jotka sekoitetaan usein toisiinsa. Worktree eristää **tiedostot** (levy). `/bg` on **taustalla toimiva istunto** (konteksti ja tokenit). Aliagentti on **erikoistunut kertaluonteinen agentti** (prompt ja työkalut). Agent View on **kaikkien istuntojen hallintapaneeli** (UI). Niitä voi yhdistää: `/bg` luo worktreen automaattisesti, `isolation: worktree` -määrityksellä toimiva aliagentti käynnistyy väliaikaisessa worktreessä, ja Agent View näyttää kaikki kolme riveinä samassa luettelossa.

</div>

| Työkalu | Mitä se eristää | Milloin sitä käytetään |
|----|----|----|
| `claude --worktree <name>` | Tiedostot (erillinen kansio + haara) | Haluat pitää manuaalisesti käynnissä N rinnakkaista istuntoa eri päätteissä |
| `/bg` (tai `Ctrl+B`) | Konteksti ja aika | Pitkä tehtävä, kun et halua estää nykyistä ikkunaa. Worktree luodaan taustalla |
| Aliagentti, jolla on `isolation: worktree` | Tiedostot yhden istunnon sisällä | Yksi prompt jakaa työn N agentille ja haluat estää niitä kirjoittamasta toistensa päälle |
| `claude agents` (Agent View) | Ei mitään, se on UI | Haluat nähdä kaikki käynnissä olevat / keskeytetyt / valmiit istunnot yhdessä hallintapaneelissa |
| `/goal` | Autonomian hallinta | Haluat Clauden työskentelevän, kunnes ehto täyttyy ilman sinulta tulevia prompteja vuorojen välissä |

Tyypillisiä yhdistelmiä:

- **“2 ominaisuutta rinnakkain, manuaalisesti”** — kaksi päätettä, joissa kummassakin suoritetaan `claude --worktree`. Yksinkertaisin tapaus.
- **“Käynnistä refaktorointi yöksi; suljen sovelluksen”** — `/bg` + `/goal` ja valmistumisehto. Istunto toimii ikkunastasi riippumatta.
- **“Yksi prompt, kolme rinnakkaista tutkimusta”** — kolme aliagenttia asetuksella `isolation: worktree`. Jokainen omassa hiekkalaatikossaan.
- **“Mitä on käynnissä juuri nyt?”** — `claude agents`. Kaikkien istuntojen hallintapaneeli, jossa on suodattimet “running”, “blocked” ja “done”.

## 5 worktreeiden käytön sudenkuoppaa

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Yleisimmät ongelmat: `.worktreeinclude` unohtuu ja ympäristö ei toimi; worktree sekoitetaan tavalliseen haaraan ja commitointia odottavat muutokset katoavat; 5+ rinnakkaista istuntoa on käynnissä eikä kukaan muista, mitä missäkin tapahtuu; `cleanupPeriodDays` jää määrittämättä, joten käyttämättömät kansiot kasaantuvat; ja luottamusdialogi unohtuu uudessa hakemistossa, jolloin `--worktree` epäonnistuu virheeseen.

</div>

**1. Käynnistit worktreen, `.env` puuttuu eikä mikään toimi.** Yleisin ongelma. Worktree on tuore checkout, josta puuttuvat kaikki Gitin ohittamat tiedostot. Ratkaisuna on lisätä `.worktreeinclude`-tiedosto, jossa on `.env*` ja tarvittavat paikalliset asetukset, heti kun otat worktree-tilan käyttöön. Tarkista, että tiedosto on repositoryn juuressa eikä hakemistossa `.claude/`.

**2. Haluat vaihtaa main-haaraan, suoritat `cd`-komennon juuressa olevaan kansioon ja menetät worktreessä olevat commitointia odottavat muutokset.** Juurikansio ja worktree ovat kaksi **eri** työkopiota. Palasit komennolla `cd`; worktreen muutokset pysyivät paikallaan—ne eivät kadonneet minnekään. Mutta jos menit sekaisin ja suoritit `git stash` -komennon päähakemistossa luullen olevasi worktreessä, stash luodaan main-haaraan eikä odottamaasi haaraan.

**3. Käynnistit 5 rinnakkaista istuntoa etkä muista, mitä kukin tekee.** Anthropicin dokumentaatio varoittaa nimenomaisesti, että useimmat kehittäjät eivät pysty hallitsemaan mielessään yli 2–3 istuntoa. Ylikuormituksen merkki on se, että avaat Agent Viewin etkä pysty heti sanomaan, mitä kukin agentti tekee. Rajoita samanaikaiset istunnot kahteen. Jos tehtävä edellyttää useampia, ne kannattaa orkestroida `/goal`-komennolla ja aliagenteilla, ei manuaalisesti.

**4. `-p`-valitsimella (headless) luotuja worktreitä ei siivota automaattisesti.** Komento `claude --worktree feature-x -p "do thing"` ei näytä vuorovaikutteista poistumiskehotetta, joten Claude ei missään vaiheessa kysy “poistetaanko worktree?”. Näitä worktreitä kertyy. Siivoa ne manuaalisesti: `git worktree remove .claude/worktrees/feature-x`. Tai käytä cron-skriptiä, joka poistaa kaiken yli 7 päivää vanhan.

**5. Luottamusdialogi uudessa kansiossa.** Jos avaat repositoryn ensimmäistä kertaa ja suoritat heti `claude --worktree`, komento epäonnistuu. Suorita `claude` ilman valitsimia, hyväksy työtilan luottamus ja poistu—sen jälkeen `--worktree` toimii. Tämä on tarkoituksellista, jotta Claude ei pääse toisen henkilön projektiin ilman käyttäjän suostumusta.

## Siivoaminen: mitä poistetaan automaattisesti

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

`--worktree`-komennolla luotu worktree, jossa ei ole muutoksia (ei commiteja, seuraamattomia tiedostoja eikä commitointia odottavia muutoksia), poistetaan automaattisesti, kun poistut. Jos muutoksia on, Claude kysyy. Aliagenttien ja `/bg`-komennon worktreet poistetaan automaattisesti asetusten `cleanupPeriodDays`-aikarajan jälkeen, jos ne ovat puhtaita. `-p`-komennolla luotuja worktreitä ei siivota lainkaan—poista ne manuaalisesti komennolla `git worktree remove`.

</div>

Siivouslogiikka riippuu siitä, mitä olet tehnyt worktreessä ja miten käynnistit istunnon. Anthropicin dokumentaatiossa luetellaan kolme tilannetta:

<figure>
<blockquote>
<p>Jos worktreessä ei ole commitointia odottavia muutoksia, seuraamattomia tiedostoja tai uusia commiteja, worktree ja sen haara poistetaan automaattisesti istunnosta poistuttaessa. Jos istunnolla on nimi, Claude kysyy poistamisen sijaan, jotta voit säilyttää worktreen myöhempää käyttöä varten.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Tilanne 1: siirryit sisään, et tehnyt mitään ja poistuit—worktree poistettiin.

Tilanne 2: teit hieman työtä mutta et commitoitu sitä—Claude kysyy poistuessasi “säilytetäänkö vai poistetaanko?”. “Säilytä” tallentaa kansion ja haaran myöhempää käyttöä varten. “Poista” poistaa hakemiston **yhdessä** commitointia odottavien muutosten ja uusien commitien kanssa. Tämä on tuhoavaa—älä napsauta “poista” tottumuksesta.

Tilanne 3: käynnistit komennon `-p`-valitsimella (headless), ja komento päättyi. Worktree jää paikalleen. Siivoa se manuaalisesti:

```bash
git worktree remove .claude/worktrees/feature-x
```

Lisäksi aliagenttien ja `/bg`-istuntojen worktreet poistetaan automaattisesti taustasiivouksessa, jos ne ovat vanhempia kuin `cleanupPeriodDays` päivää (asetus on tavallisesti oletusarvoisesti 30 päivää) **ja** niissä ei ole tallentamatonta työtä. `--worktree`-komennolla luotuihin worktreihin automaattinen siivous ei koske—ne ovat sinun vastuullasi.

## Vaihtoehdot SVN:lle, Perforcelle ja Mercurialille: `WorktreeCreate`-hook

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Worktree-tila käyttää oletusarvoisesti komentoa `git worktree`. SVN:ää, Perforcea, Mercurialia ja muita versionhallintajärjestelmiä varten voit liittää oman mekanismisi Claude Coden asetusten `WorktreeCreate`- ja `WorktreeRemove`-hookien kautta. Hook saa nimen stdin-syötteestä, sen on tulostettava luodun hakemiston polku ja poistuttava koodilla 0. Oma hook ohittaa `.worktreeinclude`-tiedoston—sinun on kopioitava paikalliset tiedostot itse hookissa.

</div>

Jos repository käyttää Subversionia tai Mercurialia, `--worktree`-valitsin ei toimi suoraan. Anthropic tarjoaa laajennuskohdan kahden hookin kautta: `WorktreeCreate` (luo eristetyn kopion) ja `WorktreeRemove` (poistaa sen).

Esimerkki SVN-hookista virallisesta dokumentaatiosta:

```json
{
  "hooks": {
    "WorktreeCreate": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"
          }
        ]
      }
    ]
  }
}
```

Hook lukee worktreen nimen stdin-syötteestä (`{ "name": "feature-auth" }`), suorittaa `svn checkout` -komennon ennalta määritettyyn hakemistoon ja tulostaa polun stdoutiin—Claude Code käyttää sitä uuden istunnon työhakemistona.

Tärkeä huomautus: omaa hookia käytettäessä `.worktreeinclude` ei ole käytössä. Jos tarvitset uuteen kansioon `.env`-tiedoston tai muita Gitin ohittamia tiedostoja, kopioi ne itse hook-skriptiä käyttäen.

## Seuraavaksi: kolme rinnakkaisen työskentelyn lähimekanismia

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Tämän osion tärkein asia">

Tärkein asia

Worktree eristää tiedostot. `/bg` eristää kontekstin ja tokenit. Aliagentti eristää tehtävän ja työkalut. `/goal` tarjoaa autonomiaa, kunnes ehto täyttyy. Kukin ratkaisee yhden ongelman erikseen. Yhdessä niiden avulla voit pitää käynnissä 3–5 rinnakkaista tehtävää ilman kognitiivista romahdusta. Lue seuraavaksi alla olevista linkeistä oppaat autonomisesta tilasta, mukautetuista aliagenteista ja dynaamisista työnkuluista.

</div>

Worktree eristää tiedostot. `/bg` eristää kontekstin. Aliagentit eristävät tehtävät. Kukin mekanismi ratkaisee yhden ongelman erikseen. Yhdessä ne mahdollistavat työskentelyn kolmen tai viiden rinnakkaisen tehtävän parissa ilman kognitiivista romahdusta. Tämä on vuonna 2026 edistyneen vibe-koodauksen työkalupakki.

Aihe jatkuu luontevasti kolmella läheisellä aiheella: [näin määrität autonomisen agentin `/goal`-komennolla ja Agent Viewillä](https://ailoot.ai/blog/fi/claude-code-goal-agent-view/), [näin rakennat omia aliagentteja tehtäviisi](https://ailoot.ai/blog/fi/claude-code-subagents/) ja [näin käynnistät satoja agentteja Dynamic Workflows -toiminnolla](https://ailoot.ai/blog/fi/claude-code-dynamic-workflows/).

<div class="section" role="doc-bibliography" aria-label="Lähteet">

### Lähteet

- [Run parallel sessions with worktrees - Claude Code Docs](https://code.claude.com/docs/en/worktrees)
- [Create custom subagents - Claude Code Docs](https://code.claude.com/docs/en/sub-agents)
- [Claude Code Changelog (May-June 2026)](https://code.claude.com/docs/en/changelog)
- [Run agents in parallel - Claude Code Docs](https://code.claude.com/docs/en/agents)
- [Agent View - Claude Code Docs](https://code.claude.com/docs/en/agent-view)
- [git worktree man page](https://git-scm.com/docs/git-worktree)

</div>





[Avaa Ailoot](https://ailoot.ai/).

## Kysymyksiä tästä oppaasta: Git worktree Claude Codessa: rinnakkaiset istunnot

### Kopioiko baseRef head committoimattomat muutokset uuteen worktreehen?

Ei. Se aloittaa nykyisestä paikallisesta HEAD-commitista ja sisältää myös etävarastosta puuttuvat paikalliset commitit. Committoimattomat seurattujen tiedostojen muokkaukset jäävät alkuperäiseen työkopioon. Siirrä tarvittava keskeneräinen työ nimenomaisesti ja tarkista uusi worktree.

### Miksi .env puuttuu uudesta worktreestä?

Worktree on tuore checkout, joten Gitin ohittamat paikalliset tiedostot puuttuvat. Claude Coden .worktreeinclude luettelee kopioitavat ohitetut tiedostot; mukautetun WorktreeCreate-hookin on hoidettava kopiointi itse. Sisällytä vain tehtävän tarvitsemat tiedostot.


## Ailoot · Yritys ja sen projektisalkku

Ailoot perustuu kertyneeseen toimintakokemukseen, laajaan asiakaskuntaan, vakaaseen palveluun ja jatkuvaan KPI-seurantaan.

Yritys ja sen projektisalkku: miljoonia asiakkaita; kuukausittainen myynti miljardiluokassa.

Ailoot hyödyntää tätä toimintakokemusta tarjotessaan API-yhteyden tekoälytoimintoihin asiakkaiden tuotteissa, agenteissa, sovelluksissa ja automaatioissa.
