# Git worktree w Claude Code: sesje równoległe

> Jak używać --worktree, .worktreeinclude, worktree.baseRef i izolacji subagentów. Różnice względem gałęzi, czyszczenie worktree i częste błędy.

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




[Praktyczne informacje o korzystaniu z Ailoot znajdziesz w dokumentacji](https://ailoot.ai/docs/).

## Czym jest git worktree w Claude Code?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Git worktree to osobny katalog roboczy dla innej gałęzi tego samego repozytorium. Polecenie `claude --worktree <name>` automatycznie tworzy worktree w `.claude/worktrees/<name>/` i uruchamia w nim Claude Code. Dwa terminale → dwie sesje → różne pliki na dysku, bez wzajemnego zakłócania pracy. Funkcja jest dostępna od razu w Claude Code v2.0+, a jej konfigurację umożliwiają `.worktreeinclude` dla sekretów i `worktree.baseRef` do wyboru gałęzi bazowej.

</div>

Uruchamianie kilku agentów równolegle w tym samym folderze to podstawowy problem vibe-codingu w tempie roku 2026. Agenci AI piszą kod szybciej, niż człowiek jest w stanie śledzić, kto nad czym pracuje. Bez izolacji plików uruchomienie dwóch równoległych sesji Claude Code w jednym katalogu kończy się nadpisaniem pracy jednej sesji przez drugą.

Git worktree rozwiązuje ten problem na poziomie systemu plików. Masz jeden główny katalog, w którym pracujesz. Polecenie `claude --worktree feature-auth` tworzy folder `.claude/worktrees/feature-auth/` w osobnej gałęzi i uruchamia w nim Claude Code. Pliki są odizolowane. Zmiany z jednej sesji nie są widoczne w drugiej, dopóki jawnie ich nie scalą.

Oficjalna dokumentacja Anthropic ujmuje to tak:

<figure>
<blockquote>
<p>Uruchomienie każdej sesji Claude Code we własnym worktree oznacza, że edycje w jednej sesji nigdy nie wpływają na pliki w drugiej. Możesz tworzyć funkcję w jednym terminalu i naprawiać błąd w drugim.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Wskazówka do samodzielnej oceny: jeśli zdarzyło ci się dostać commit, w którym połowa plików była czyjąś pracą, potrzebujesz worktree.

## Czym git worktree różni się od zwykłej gałęzi

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Zwykłe `git checkout` przełącza kopię roboczą w tym samym folderze — stare pliki znikają z dysku, dopóki nie wrócisz do gałęzi. `git worktree add` tworzy **drugi folder** dla innej gałęzi obok pierwszego. Obie gałęzie są jednocześnie na dysku; przechodzisz między nimi prostym poleceniem `cd`. Pod spodem znajduje się jedno repozytorium `.git`, ze wspólną historią i wspólnym zdalnym repozytorium. Tylko kopii roboczych jest kilka.

</div>

Standardowy przebieg pracy z Gitem wygląda tak: jesteś w gałęzi `main` i uruchamiasz `git checkout feature-x` — Git nadpisuje pliki w kopii roboczej. Uruchomione `npm run dev` przestaje działać, bo zmienił się plik `package.json`. Odkładasz niezatwierdzone zmiany za pomocą stash i czekasz, aż IDE ponownie zaindeksuje pliki. Wracasz do poprzedniej gałęzi, wszystko znów zostaje nadpisane, więc ponownie musisz wykonać stash i pop.

Git worktree daje inną możliwość: zamiast przełączać **jeden** folder między gałęziami, tworzysz **drugi** folder dla innej gałęzi. Polecenie `git worktree add ../project-feature-x feature-x` tworzy katalog `../project-feature-x/` z plikami z gałęzi `feature-x`. Gałąź `main` pozostaje w pierwotnym folderze, a serwer deweloperski nadal działa.

| Parametr | Gałąź `git checkout` | `git worktree add` |
|----|----|----|
| Pliki kopii roboczej | Nadpisywane | Pojawiają się w nowym folderze |
| Równoległa praca nad dwiema gałęziami | Nie | Tak |
| Niezatwierdzone zmiany | Trzeba użyć `git stash` | Nic nie trzeba robić |
| Szybkość przełączania | Zależy od wielkości różnic | Wystarczy `cd` |
| Miejsce na dysku | 1× | N× (jedna kopia plików na gałąź) |

Wcześniej tryb worktree w Claude Code trzeba było konfigurować ręcznie: `git worktree add`, potem `cd`, a następnie `claude` — i powtarzać to w każdym terminalu. Flaga `--worktree` (dostępna też jako `-w`) wykonuje te trzy kroki jednym poleceniem.

## Uruchom pierwszą równoległą sesję: flaga `--worktree`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Polecenie `claude --worktree feature-auth` tworzy worktree w `.claude/worktrees/feature-auth/`, tworzy gałąź `worktree-feature-auth` na podstawie `origin/HEAD` i uruchamia tam Claude Code. Nie musisz ręcznie wykonywać `git worktree add` ani `cd`. W sąsiednim terminalu powtórz polecenie z inną nazwą, aby uzyskać dwie niezależne sesje. Jeśli pominiesz nazwę (`claude --worktree`), Claude wygeneruje losową, na przykład `bright-running-fox`.

</div>

Minimalny przykład. Otwórz pierwszy terminal w katalogu głównym projektu:

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

Claude Code wykona trzy czynności:

1. Utworzy `.claude/worktrees/feature-auth/` ze snapshotem `origin/HEAD` (zwykle twojej domyślnej gałęzi).
2. Utworzy nową gałąź `worktree-feature-auth`.
3. Uruchomi sesję w tym folderze.

Otwórz drugi terminal w tym samym katalogu głównym repozytorium:

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

Gotowe. Dwie sesje Claude Code, różne pliki na dysku i różne gałęzie Gita. Jeśli w pierwszej napiszesz obsługę uwierzytelniania, a w drugiej naprawisz nieudany test, fizycznie nie będą mogły sobie przeszkadzać.

Jeśli nie chcesz wpisywać nazwy, Claude sam ją wymyśli:

```bash
claude --worktree
# → tworzy coś w rodzaju .claude/worktrees/bright-running-fox/
```

Wskazówka dla początkujących użytkowników Gita: dodaj `.claude/worktrees/` do `.gitignore`. W przeciwnym razie po uruchomieniu `git status` w głównym folderze zobaczysz zawartość wszystkich worktree jako nieśledzone pliki:

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

Pułapka, której należy unikać: przed pierwszym uruchomieniem `--worktree` w nowym katalogu wejdź do niego za pomocą zwykłego `claude` (bez flagi) i zaakceptuj okno dialogowe zaufania do obszaru roboczego. Jeśli tego nie zrobisz, flaga zakończy działanie błędem „trust not accepted” — również wtedy, gdy połączysz ją z `-p` w trybie bez interakcji.

## Gdzie znajdują się worktree i jak je znaleźć

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Domyślnie wszystkie worktree znajdują się w `.claude/worktrees/<name>/`, obok katalogu głównego repozytorium. Aby wyświetlić listę, uruchom `git worktree list`. Aby ręcznie wejść do worktree, użyj `cd .claude/worktrees/feature-auth`. Aby przełączyć się w sesji Claude, poproś o „przełączenie do innego worktree”; Claude użyje wbudowanego narzędzia EnterWorktree. Stare worktree pozostaje nietknięte na dysku.

</div>

Domyślna lokalizacja jest stała: `.claude/worktrees/<value>/` w katalogu głównym repozytorium. Jeśli twój projekt znajduje się w `~/dev/my-app/`, worktree `feature-auth` będzie w `~/dev/my-app/.claude/worktrees/feature-auth/`.

W przypadku niestandardowych układów (na przykład gdy chcesz umieścić worktree poza repozytorium) dostępny jest hook `WorktreeCreate` — więcej na ten temat poniżej, w sekcji o SVN i Mercurial.

W ramach jednej sesji Claude możesz przełączyć się do innego istniejącego worktree. Wystarczy napisać na czacie: „przełącz się do `.claude/worktrees/bugfix-123`”, a Claude wywoła narzędzie `EnterWorktree`. Bieżący folder pozostanie nietknięty — możesz wrócić w ten sam sposób.

Standardowe polecenie Gita wyświetla listę wszystkich worktree, w tym głównego oraz utworzonych ręcznie:

```bash
git worktree list
```

Wynik będzie wyglądać tak:

```
/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]
```

## Kopiowanie `.env` i sekretów: plik `.worktreeinclude`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Worktree to świeże pobranie projektu. Plików z `.gitignore` (`.env`, `.env.local`, lokalne konfiguracje) nie ma w nowym folderze. Bez nich `npm run dev` ani `prisma db push` nie zadziałają. Plik `.worktreeinclude` w katalogu głównym projektu używa składni `.gitignore` i wskazuje Claude Code, które pliki mają być automatycznie kopiowane do każdego nowego worktree. Jest odczytywany przy użyciu `--worktree`, w worktree subagentów i w sesjach aplikacji desktopowej.

</div>

Gdy `--worktree` tworzy nowy folder, trafiają do niego tylko pliki zatwierdzone w Gicie. `.env` z kluczami API i `.env.local` z lokalną konfiguracją znajdują się w `.gitignore`, więc nie ma ich w worktree. W rezultacie pierwsze `npm run dev` kończy się błędem „MISSING DATABASE_URL”.

Domowe rozwiązanie polega na ręcznym kopiowaniu `.env` po każdym użyciu `--worktree`. Raz zadziała, a potem się o tym zapomina. Rozwiązaniem Anthropic jest plik `.worktreeinclude` w katalogu głównym projektu, w którym wymienia się pliki ignorowane przez Git do automatycznego kopiowania do każdego nowego worktree.

Utwórz plik `.worktreeinclude` w katalogu głównym repozytorium:

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

Składnia jest taka sama jak w `.gitignore`. Możesz używać wzorców glob:

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

Anthropic podaje jasną zasadę, która zapobiega wypadkom:

<figure>
<blockquote>
<p>Plik używa składni gitignore. Kopiowane są tylko pliki pasujące do wzorca, które są również ignorowane przez Git. Pliki śledzone przez Git nigdy nie są duplikowane.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Innymi słowy, nie da się przypadkowo skopiować `package.json` przez `.worktreeinclude` — nie znajduje się on w `.gitignore`. Można bezpiecznie umieszczać tam dowolne wzorce.

Ten sam `.worktreeinclude` działa w trzech trybach: ręcznym `--worktree`, automatycznych worktree dla subagentów (patrz niżej) oraz sesjach aplikacji desktopowej Claude.

## Worktree z pull requesta do przeglądu kodu

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Polecenie `claude --worktree "#1234"` pobiera z origin pull request \#1234 i tworzy worktree w `.claude/worktrees/pr-1234/` z gałęzią PR. Możesz podać pełny adres URL: `claude --worktree https://github.com/OWNER/REPO/pull/1234`. Przydaje się to podczas przeglądu kodu: otwórz PR we własnym folderze, a Claude może uruchamiać testy, czytać logi i pisać komentarz, podczas gdy główne repozytorium pozostaje nietknięte.

</div>

Typowy scenariusz przeglądu kodu: kolega wysłał PR, a ty musisz sprawdzić kod, uruchomić testy i zostawić komentarz. Przy zwykłym `git checkout pull/1234/head` ponownie przełączasz kopię roboczą i zakłócasz aktywną sesję.

Z flagą `--worktree` wystarczy jedno polecenie:

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

Co się dzieje: Claude Code uruchamia `git fetch origin pull/1234/head`, tworzy worktree w `.claude/worktrees/pr-1234/` i przełącza się na gałąź PR. Uruchamia się sesja. Możesz od razu poprosić: „przeczytaj diff, uruchom testy i znajdź błędy logiczne” — podczas gdy Claude pracuje, twoja główna sesja na `main` nadal działa.

Alternatywną składnią jest pełny adres URL pull requesta:

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

W prawdziwym projekcie połączenie `claude --worktree "#N"` z własnym subagentem do przeglądu kodu daje automatyczny przegląd w minutę lub dwie. Uruchom go w tle, kontynuuj pracę w głównym oknie, a potem wróć do wyniku przez `claude agents`.

## Gałąź bazowa: `worktree.baseRef` z wartością `fresh` lub `head`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Domyślnie worktree tworzy gałąź na podstawie `origin/HEAD` — najnowszego commita zsynchronizowanego ze zdalnym repozytorium. To bezpieczny, „czysty” punkt startowy. Jeśli chcesz lokalnych niewysłanych commitów, ustaw `worktree.baseRef: "head"`. HEAD wskazuje commit; niezacommitowane zmiany plików śledzonych pozostają w oryginalnej kopii i wymagają osobnego jawnego przeniesienia. Przydaje się to, gdy subagent ma pracować na bieżącej funkcji bez przełączania się na main. Akceptowane wartości to wyłącznie `fresh` lub `head`; dowolne refs nie są obsługiwane.

</div>

Domyślne ustawienie oznacza, że każde nowe worktree zaczyna się od `origin/HEAD`. Zaletą jest czysty punkt startowy, który na pewno odpowiada temu, co zobaczy CI. Wadą jest to, że niezatwierdzone zmiany ani lokalne commity wykraczające poza stan zdalny nie zostaną uwzględnione w nowym worktree.

Aby worktree startowało z bieżącego lokalnego commita HEAD, dodaj wpis do `.claude/settings.json` lub ustawień globalnych:

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

Teraz `claude --worktree experimental-feature` startuje z bieżącego lokalnego `HEAD`. To przydatne, gdy funkcja ma już lokalne niewysłane commity. Nie obejmuje niezacommitowanych edycji śledzonych plików. Jeśli subagent ich potrzebuje, zachowaj i jawnie przenieś wymagane zmiany, potem obejrzyj diff celu; nie myl tego z `.worktreeinclude` dla ignorowanych plików lokalnych.

Ustawienie przyjmuje dokładnie dwie wartości: `"fresh"` (= `origin/HEAD`) i `"head"` (= lokalny HEAD). Nie przyjmuje dowolnych refs, takich jak `"feature-branch"` ani hash commita — to celowe ograniczenie, które zapobiega kombinatorycznej eksplozji opcji.

## Automatyczna izolacja subagentów: `isolation: worktree`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Subagent w Claude Code to wyspecjalizowany agent wykonujący jedno zadanie (przegląd kodu, refaktoryzację, research). Jeśli uruchomisz kilka subagentów równolegle z jednej sesji, domyślnie pracują w tym samym folderze i mogą nadpisywać sobie pliki. Dodaj `isolation: worktree` do frontmatter subagenta, aby każdy dostał tymczasowe worktree, które zostanie poprawnie usunięte na końcu, jeśli agent niczego nie zatwierdził.

</div>

Gdy powiesz Claude: „uruchom trzech subagentów: pierwszy czyta bazę danych, drugi sprawdza API, a trzeci testy”, wszyscy trzej domyślnie pracują na twojej kopii roboczej. Jeśli nawet dwóch z nich zapisze jednocześnie ten sam plik, powstanie konflikt. Rozwiązaniem jest automatyczne przydzielenie każdemu własnego worktree.

Metoda 1: poproś słownie. Napisz Claude w rozmowie:

```
Używaj worktree dla swoich agentów.
```

Claude zastosuje izolację do wszystkich kolejnych subagentów uruchamianych w tej sesji.

Metoda 2: ustaw to jawnie w samym subagencie. W pliku subagenta (na przykład `.claude/agents/code-reviewer.md`) dodaj pole do frontmatter:

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

Jesteś skrupulatnym recenzentem. Przeczytaj diff i poszukaj błędów logicznych...
```

Teraz każde uruchomienie tego subagenta otrzyma tymczasowe worktree w `.claude/worktrees/`. Jeśli subagent niczego nie zmienił, folder zostanie automatycznie usunięty po zakończeniu. Jeśli pozostały niezatwierdzone zmiany, Claude zapyta, czy je zachować, czy usunąć.

Gałąź bazowa worktree subagentów jest taka sama jak dla `--worktree`: domyślnie `origin/HEAD`, a przy `worktree.baseRef: head` — lokalny `HEAD`.

## Matryca decyzji: worktree, `/bg`, subagent czy Agent View

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Cztery mechanizmy Claude Code, które często się myli. Worktree zapewnia **izolację plików** (dysk). `/bg` oznacza **sesję w tle** (kontekst i tokeny). Subagent to **wyspecjalizowany, jednorazowy agent** (prompt i narzędzia). Agent View to **panel wszystkich sesji** (UI). Można je łączyć: `/bg` automatycznie tworzy worktree, subagent z `isolation: worktree` uruchamia się w tymczasowym worktree, a Agent View pokazuje wszystkie trzy jako wiersze na jednej liście.

</div>

| Narzędzie | Co izoluje | Kiedy używać |
|----|----|----|
| `claude --worktree <name>` | Pliki (osobny folder i gałąź) | Chcesz ręcznie utrzymywać równolegle N sesji w różnych terminalach |
| `/bg` (lub `Ctrl+B`) | Kontekst i czas | Długie zadanie, gdy nie chcesz blokować bieżącego okna. Worktree jest tworzone w tle |
| Subagent z `isolation: worktree` | Pliki w obrębie jednej sesji | Jeden prompt przydziela pracę N agentom i chcesz zapobiec wzajemnemu nadpisywaniu plików |
| `claude agents` (Agent View) | Niczego, to UI | Chcesz widzieć wszystkie działające, wstrzymane i ukończone sesje na jednym panelu |
| `/goal` | Zarządzanie autonomią | Chcesz, by Claude pracował do spełnienia warunku bez monitów między kolejnymi turami |

Typowe kombinacje:

- **„Ręcznie, równolegle dwie funkcje”** — dwa terminale, w każdym `claude --worktree`. Najprostszy przypadek.
- **„Uruchom refaktoryzację na noc, zamknę aplikację”** — `/bg` + `/goal` z warunkiem ukończenia. Sesja działa niezależnie od twojego okna.
- **„Jeden prompt, trzy równoległe analizy”** — trzech subagentów z `isolation: worktree`. Każdy pracuje we własnej piaskownicy.
- **„Co teraz działa?”** — `claude agents`. Panel wszystkich sesji z filtrami „działa”, „zablokowana” i „gotowa”.

## 5 pułapek podczas pracy z worktree

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Najczęstsze problemy to: zapomnienie o `.worktreeinclude`, przez co środowisko nie działa; pomylenie worktree ze zwykłą gałęzią i przekonanie, że utracono niezatwierdzone zmiany; utrzymywanie ponad 5 równoległych sesji i zapominanie, co gdzie się dzieje; brak konfiguracji `cleanupPeriodDays`, przez co gromadzą się nieużywane foldery; oraz pominięcie okna zaufania w nowym katalogu, co powoduje błąd `--worktree`.

</div>

**1. Uruchomiono worktree, brakuje `.env` i nic nie działa.** To najczęstszy problem. Worktree to świeże pobranie bez plików ignorowanych przez Git. Rozwiązaniem jest dodanie pliku `.worktreeinclude` z `.env*` i niezbędnymi lokalnymi konfiguracjami zaraz po skonfigurowaniu trybu worktree. Sprawdź, czy plik znajduje się w katalogu głównym repozytorium, a nie w `.claude/`.

**2. Chcesz przełączyć się na gałąź main, wykonujesz `cd` do katalogu głównego i tracisz niezatwierdzone zmiany w worktree.** Folder główny i worktree to **dwie różne** kopie robocze. Po powrocie za pomocą `cd` zmiany w worktree nadal tam są — nigdzie nie zniknęły. Jeśli jednak pomylisz miejsca i wykonasz `git stash` w głównym folderze, myśląc, że jesteś w worktree, stash zostanie utworzony na gałęzi głównej, a nie na tej, której się spodziewasz.

**3. Uruchomiono 5 równoległych sesji i nie pamiętasz, co robi każda z nich.** Dokumentacja Anthropic wyraźnie ostrzega, że większość programistów nie jest w stanie poznawczo obsłużyć więcej niż 2–3 sesji. Oznaką przeciążenia jest otwarcie Agent View i niemożność natychmiastowego powiedzenia, czym zajmuje się każdy agent. Ogranicz się do dwóch jednoczesnych sesji. Jeśli zadanie wymaga ich więcej, należy koordynować je przez `/goal` + subagentów, a nie ręcznie.

**4. Worktree uruchomione przez `-p` (tryb bez interakcji) nie są automatycznie czyszczone.** Polecenie `claude --worktree feature-x -p "do thing"` nie wyświetla interaktywnego monitu przy wyjściu, więc nie ma momentu, w którym Claude pyta „usunąć worktree?”. Takie worktree się gromadzą. Czyść je ręcznie: `git worktree remove .claude/worktrees/feature-x`. Możesz też użyć skryptu cron, który usuwa elementy starsze niż 7 dni.

**5. Okno dialogowe zaufania w nowym folderze.** Jeśli po raz pierwszy otworzysz repozytorium i od razu uruchomisz `claude --worktree`, polecenie zakończy się niepowodzeniem. Uruchom `claude` bez flag, zaakceptuj zaufanie do obszaru roboczego i zakończ — wtedy `--worktree` zadziała. To celowe zabezpieczenie, dzięki któremu Claude nie uzyska dostępu do cudzego projektu bez zgody użytkownika.

## Czyszczenie: co jest usuwane automatycznie

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Worktree utworzone przez `--worktree`, w którym nie ma zmian (commitów, nieśledzonych plików ani niezatwierdzonych zmian), jest automatycznie usuwane przy wyjściu. Jeśli są zmiany, Claude zapyta. Worktree subagentów i `/bg` są automatycznie usuwane po przekroczeniu czasu `cleanupPeriodDays` ustawionego w konfiguracji, jeśli są czyste. Worktree uruchomione przez `-p` nie są w ogóle czyszczone — usuń je ręcznie przez `git worktree remove`.

</div>

Logika czyszczenia zależy od tego, co zrobiłeś w worktree i jak uruchomiłeś sesję. Dokumentacja Anthropic wymienia trzy scenariusze:

<figure>
<blockquote>
<p>Jeśli w worktree nie ma niezatwierdzonych zmian, nieśledzonych plików ani nowych commitów, worktree i jego gałąź zostaną automatycznie usunięte po wyjściu z sesji. Jeśli sesja ma nazwę, Claude zapyta zamiast usuwać worktree, aby można było zachować je na później.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Scenariusz 1: wchodzisz, nic nie robisz i wychodzisz — worktree zostaje usunięte.

Scenariusz 2: wykonujesz pracę, ale jej nie commitujesz — przy wyjściu Claude zapyta „zachować czy usunąć?”. „Zachowaj” zapisuje folder i gałąź do późniejszego użycia. „Usuń” kasuje katalog **razem z** niezatwierdzonymi zmianami i nowymi commitami. To działanie destrukcyjne — nie klikaj „usuń” z przyzwyczajenia.

Scenariusz 3: uruchamiasz polecenie z `-p` (tryb bez interakcji), a następnie kończy ono działanie. Worktree pozostaje. Wyczyść je ręcznie:

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

Ponadto worktree z subagentów i sesji `/bg` są automatycznie usuwane przez czyszczenie w tle, jeśli są starsze niż `cleanupPeriodDays` dni (ustawienie, zwykle domyślnie 30 dni) **i** nie zawierają niezapisanej pracy. Worktree utworzone przez `--worktree` nie podlegają automatycznemu czyszczeniu — odpowiadasz za nie samodzielnie.

## Rozwiązania dla SVN, Perforce i Mercurial: hook `WorktreeCreate`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Tryb worktree domyślnie używa `git worktree`. W przypadku SVN, Perforce, Mercurial i innych systemów kontroli wersji możesz podłączyć własny mechanizm za pomocą hooków `WorktreeCreate` i `WorktreeRemove` w ustawieniach Claude Code. Hook otrzymuje nazwę przez stdin, musi wypisać ścieżkę utworzonego katalogu i zakończyć działanie kodem 0. Przy użyciu własnego hooka `.worktreeinclude` nie jest przetwarzany — pliki lokalne musisz kopiować samodzielnie w hooku.

</div>

Jeśli repozytorium korzysta z Subversion lub Mercurial, flaga `--worktree` nie zadziała bezpośrednio. Anthropic udostępnia punkt rozszerzeń za pomocą dwóch hooków: `WorktreeCreate` (tworzy odizolowaną kopię) i `WorktreeRemove` (usuwa ją).

Przykładowy hook SVN z oficjalnej dokumentacji:

```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 odczytuje nazwę worktree ze stdin (`{ "name": "feature-auth" }`), wykonuje `svn checkout` do wcześniej wyznaczonego katalogu i wypisuje ścieżkę na stdout — Claude Code używa jej jako katalogu roboczego nowej sesji.

Ważne zastrzeżenie: przy użyciu własnego hooka `.worktreeinclude` nie jest stosowany. Jeśli nowy folder ma zawierać `.env` lub inne pliki ignorowane przez Git, skopiuj je bezpośrednio w skrypcie hooka.

## Co dalej: trzy powiązane mechanizmy pracy równoległej

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

Najważniejsze informacje

Worktree zapewnia izolację plików. `/bg` zapewnia izolację kontekstu i tokenów. Subagent zapewnia izolację zadań i narzędzi. `/goal` zapewnia autonomię aż do spełnienia warunku. Każdy mechanizm samodzielnie rozwiązuje jeden problem. Razem umożliwiają prowadzenie 3–5 równoległych zadań bez poznawczego przeciążenia. Warto teraz poznać powiązane poradniki o trybie autonomicznym, własnych subagentach i dynamicznych przepływach pracy za pomocą Dynamic Workflows — linki znajdziesz poniżej.

</div>

Worktree zapewnia izolację plików. `/bg` zapewnia izolację kontekstu. Subagenci zapewniają izolację zadań. Każdy mechanizm samodzielnie rozwiązuje jeden problem. Razem umożliwiają równoległą pracę nad trzema do pięciu zadaniami bez poznawczego przeciążenia. To zestaw umiejętności stojący za zaawansowanym vibe-codingiem w 2026 roku.

Ten temat naturalnie prowadzi do trzech powiązanych zagadnień: [jak skonfigurować autonomicznego agenta za pomocą `/goal` i Agent View](https://ailoot.ai/blog/pl/claude-code-goal-agent-view/), [jak zbudować własnych subagentów do swoich zadań](https://ailoot.ai/blog/pl/claude-code-subagents/) oraz [jak uruchamiać setki agentów za pomocą Dynamic Workflows](https://ailoot.ai/blog/pl/claude-code-dynamic-workflows/).

<div class="section" role="doc-bibliography" aria-label="Sources">

### Źródła

- [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>





[Otwórz Ailoot](https://ailoot.ai/).

## Pytania i odpowiedzi

### Czy baseRef head kopiuje niezacommitowane zmiany do worktree?

Nie. Startuje z lokalnego commita HEAD, także nieobecnego zdalnie. Niezacommitowane edycje śledzonych plików pozostają w oryginale; potrzebny WIP przenieś jawnie i sprawdź nowe worktree.

### Dlaczego w nowym worktree brakuje .env?

Worktree jest świeżym checkoutem bez lokalnych ignorowanych plików. `.worktreeinclude` Claude Code wymienia ignorowane pliki do kopiowania; własny WorktreeCreate musi zrobić to sam. Uwzględnij tylko pliki wymagane zadaniem.


## Ailoot · Firma i jej portfel projektów

Ailoot opiera się na zgromadzonym doświadczeniu operacyjnym, szerokiej bazie klientów, stabilnej usłudze i stałej kontroli KPI.

Firma i jej portfel projektów: miliony klientów; miesięczna sprzedaż liczona w miliardach.

Ailoot wykorzystuje to doświadczenie operacyjne, zapewniając dostęp przez API do funkcji AI w produktach klientów, agentach, aplikacjach i automatyzacjach.
