# Git worktree dalam Claude Code: sesi selari

> Cara menggunakan --worktree, .worktreeinclude, worktree.baseRef dan pengasingan subagen. Perbezaan daripada branch, pembersihan worktree dan kesilapan lazim.

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




[Maklumat praktikal tentang penggunaan Ailoot tersedia dalam dokumentasi](https://ailoot.ai/docs/).

## Apakah git worktree dalam Claude Code

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

Inti pati

Git worktree ialah direktori kerja berasingan untuk branch lain dalam repositori yang sama. Arahan `claude --worktree <name>` mencipta worktree secara automatik di `.claude/worktrees/<name>/` dan memulakan Claude Code di situ. Dua terminal → dua sesi → fail berbeza pada cakera, tanpa gangguan. Ciri ini tersedia terus dalam Claude Code v2.0+ dan boleh dikonfigurasikan melalui `.worktreeinclude` untuk rahsia dan `worktree.baseRef` untuk memilih branch asas.

</div>

Melancarkan beberapa ejen secara serentak dalam folder yang sama ialah masalah asas vibe-coding pada kelajuan tahun 2026. Agen AI menulis kod lebih pantas daripada kemampuan seseorang untuk menjejaki siapa sedang mengusahakan apa. Tanpa pengasingan fail, melancarkan dua sesi Claude Code secara serentak dalam satu direktori akan menyebabkan satu sesi menindih kerja sesi yang lain.

Git worktree menyelesaikan masalah ini pada peringkat sistem fail. Anda mempunyai satu direktori utama untuk bekerja. Arahan `claude --worktree feature-auth` mencipta folder `.claude/worktrees/feature-auth/` pada branch berasingan dan memulakan Claude Code di situ. Fail-failnya diasingkan. Perubahan dalam satu sesi tidak kelihatan kepada sesi yang lain sehingga anda menggabungkannya secara jelas.

Dokumentasi rasmi Anthropic menerangkannya begini:

<figure>
<blockquote>
<p>Apabila setiap sesi Claude Code dijalankan dalam worktree tersendiri, suntingan dalam satu sesi tidak akan menjejaskan fail dalam sesi lain. Anda boleh membina ciri dalam satu terminal dan membaiki pepijat dalam terminal yang lain.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Petunjuk untuk semakan kendiri: jika anda pernah menerima commit yang separuh daripada failnya hasil kerja orang lain, anda perlukan worktree.

## Perbezaan git worktree dengan branch biasa

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

Inti pati

`git checkout` biasa menukar salinan kerja dalam folder yang sama—fail lama hilang daripada cakera sehingga anda kembali ke branch tersebut. `git worktree add` mencipta **folder kedua** untuk branch lain di sebelah folder pertama. Kedua-dua branch berada pada cakera pada masa yang sama; anda bertukar antaranya dengan arahan `cd` yang mudah. Di sebalik tabir, terdapat satu repositori `.git` dengan sejarah dan remote yang dikongsi. Hanya beberapa salinan kerja.

</div>

Aliran kerja Git standard: anda berada pada branch `main` lalu menjalankan `git checkout feature-x`—Git menulis ganti fail salinan kerja. `npm run dev` yang sedang berjalan rosak kerana `package.json` berubah di bawahnya. Anda menyimpan perubahan yang belum di-commit dengan `git stash` dan menunggu IDE mengindeks semula. Anda beralih kembali dan semuanya ditulis ganti sekali lagi, jadi anda perlu membuat stash dan pop sekali lagi.

Git worktree memberikan pilihan lain: daripada menukar **satu** folder antara branch, anda mencipta **folder kedua** untuk branch lain. Arahan `git worktree add ../project-feature-x feature-x` mencipta direktori `../project-feature-x/` dengan fail daripada branch `feature-x`. `main` kekal dalam folder asal, dan pelayan pembangunan terus berjalan.

| Parameter | Branch `git checkout` | `git worktree add` |
|----|----|----|
| Fail salinan kerja | Ditulis ganti | Muncul dalam folder baharu |
| Kerja serentak pada dua branch | Tidak | Ya |
| Perubahan belum di-commit | Perlu `git stash` | Tidak perlu buat apa-apa |
| Kelajuan bertukar | Bergantung pada saiz perubahan | Hanya `cd` |
| Ruang cakera | 1× | N× (satu salinan fail bagi setiap branch) |

Sebelum ini, mod worktree dalam Claude Code perlu disediakan secara manual: `git worktree add`, kemudian `cd`, kemudian `claude`—dan ulang dalam setiap terminal. Bendera `--worktree` (juga `-w`) melakukan ketiga-tiganya dengan satu arahan.

## Melancarkan sesi selari pertama: bendera `--worktree`

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

Inti pati

Arahan `claude --worktree feature-auth` mencipta worktree di `.claude/worktrees/feature-auth/`, mencipta branch `worktree-feature-auth` daripada `origin/HEAD`, dan memulakan Claude Code di situ. Tiada keperluan untuk menjalankan `git worktree add` atau `cd` secara manual. Dalam terminal bersebelahan, ulang dengan nama lain untuk mendapatkan dua sesi bebas. Jika anda tidak memberikan nama (`claude --worktree`), Claude menjana nama rawak seperti `bright-running-fox`.

</div>

Contoh minimum. Buka terminal pertama di akar projek:

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

Claude Code melakukan tiga perkara:

1. Mencipta `.claude/worktrees/feature-auth/` dengan salinan `origin/HEAD` (biasanya branch lalai anda).
2. Mencipta branch `worktree-feature-auth` yang baharu.
3. Memulakan sesi dalam folder ini.

Buka terminal kedua di folder akar repositori yang sama:

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

Selesai. Dua sesi Claude Code, fail berbeza pada cakera, branch Git yang berbeza. Jika anda menulis kod pengesahan dalam sesi pertama dan membaiki ujian yang gagal dalam sesi kedua, kedua-duanya tidak mungkin mengganggu satu sama lain secara fizikal.

Jika anda tidak mahu menaip nama, Claude akan menciptanya:

```bash
claude --worktree
# → mencipta sesuatu seperti .claude/worktrees/bright-running-fox/
```

Petua untuk pemula Git: tambahkan `.claude/worktrees/` pada `.gitignore`. Jika tidak, apabila anda menjalankan `git status` dalam folder utama, kandungan semua worktree akan kelihatan sebagai fail yang tidak dijejak:

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

Perkara yang perlu dielakkan: sebelum pelancaran `--worktree` pertama dalam direktori baharu, masuk ke dalamnya dengan `claude` biasa (tanpa bendera) dan terima dialog kepercayaan ruang kerja. Jika tidak, bendera itu gagal dengan ralat “trust not accepted”—termasuk jika digabungkan dengan `-p` untuk mod tanpa kepala.

## Lokasi worktree dan cara mencarinya

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

Inti pati

Secara lalai, semua worktree berada di `.claude/worktrees/<name>/` di sebelah akar repositori anda. Untuk melihat senarainya, jalankan `git worktree list`. Untuk masuk ke worktree secara manual, gunakan `cd .claude/worktrees/feature-auth`. Untuk bertukar dalam sesi Claude, minta Claude “beralih ke worktree lain”; ia menggunakan alat terbina dalam EnterWorktree. Worktree lama kekal tanpa disentuh pada cakera.

</div>

Lokasi lalai ditetapkan: `.claude/worktrees/<value>/` di akar repositori. Jika projek anda berada di `~/dev/my-app/`, worktree `feature-auth` akan berada di `~/dev/my-app/.claude/worktrees/feature-auth/`.

Untuk susun atur bukan standard (contohnya, jika anda mahu worktree berada di luar repositori), terdapat hook `WorktreeCreate`—huraian lanjut di bawah dalam bahagian tentang SVN dan Mercurial.

Dalam satu sesi Claude, anda boleh bertukar ke worktree sedia ada yang lain. Cakap sahaja dalam sembang: “beralih ke `.claude/worktrees/bugfix-123`,” lalu Claude akan memanggil alat `EnterWorktree`. Folder semasa kekal tanpa disentuh—anda boleh kembali dengan cara yang sama.

Arahan Git standard memaparkan senarai semua worktree, termasuk worktree utama dan yang dicipta secara manual:

```bash
git worktree list
```

Outputnya akan kelihatan seperti ini:

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

## Menyalin `.env` dan rahsia: fail `.worktreeinclude`

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

Inti pati

Worktree ialah checkout baharu. Fail daripada `.gitignore` (`.env`, `.env.local`, konfigurasi setempat) tiada dalam folder baharu. Tanpanya, `npm run dev` atau `prisma db push` tidak akan berjalan. Fail `.worktreeinclude` di akar projek menggunakan sintaks `.gitignore` dan memberitahu Claude Code fail yang diabaikan Git untuk disalin secara automatik ke setiap worktree baharu. Fail ini digunakan untuk `--worktree`, worktree subagen dan sesi aplikasi desktop.

</div>

Apabila `--worktree` mencipta folder baharu, folder itu hanya menerima perkara yang telah di-commit ke Git. `.env` yang mengandungi kunci API dan `.env.local` yang mengandungi konfigurasi setempat berada dalam `.gitignore`, maka kedua-duanya tiada dalam worktree. Akibatnya, `npm run dev` yang pertama gagal dengan “MISSING DATABASE_URL”.

Penyelesaian buatan sendiri ialah menyalin `.env` secara manual selepas setiap `--worktree`. Ia berfungsi sekali, kemudian terlupa. Penyelesaian Anthropic ialah fail `.worktreeinclude` di akar projek yang menyenaraikan fail diabaikan Git untuk disalin secara automatik ke setiap worktree baharu.

Cipta fail `.worktreeinclude` di akar repositori:

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

Sintaksnya sama seperti `.gitignore`. Anda boleh menggunakan corak glob:

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

Anthropic memberikan peraturan yang jelas untuk mengelakkan kesilapan:

<figure>
<blockquote>
<p>Fail ini menggunakan sintaks gitignore. Hanya fail yang sepadan dengan corak dan turut diabaikan Git akan disalin. Fail yang dijejak Git tidak akan diduplikasi.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Dengan kata lain, anda tidak boleh tersalin `package.json` secara tidak sengaja melalui `.worktreeinclude`—fail itu tidak berada dalam `.gitignore`. Selamat untuk meletakkan sebarang corak di situ.

`.worktreeinclude` yang sama berfungsi dalam tiga mod: `--worktree` manual, worktree automatik untuk subagen (lihat di bawah) dan sesi daripada aplikasi desktop Claude.

## Worktree daripada pull request untuk semakan kod

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

Inti pati

Arahan `claude --worktree "#1234"` mengambil pull request \#1234 daripada origin dan mencipta worktree di `.claude/worktrees/pr-1234/` dengan branch PR tersebut. Anda boleh memberikan URL penuh—`claude --worktree https://github.com/OWNER/REPO/pull/1234`. Berguna untuk semakan kod: buka PR dalam folder tersendiri dan Claude boleh menjalankan ujian, membaca log serta menulis komen sementara repositori utama kekal tanpa disentuh.

</div>

Senario semakan kod biasa: rakan sekerja menghantar PR; anda perlu memeriksa kod, menjalankan ujian dan meninggalkan komen. Dengan `git checkout pull/1234/head` biasa, anda menukar salinan kerja sekali lagi dan mengganggu sesi aktif.

Dengan bendera `--worktree`, hanya satu arahan diperlukan:

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

Perkara yang berlaku: Claude Code menjalankan `git fetch origin pull/1234/head`, mencipta worktree di `.claude/worktrees/pr-1234/` dan checkout branch PR. Sesi pun bermula. Anda boleh terus memintanya “baca diff, jalankan ujian dan cari ralat logik”—sementara Claude bekerja, sesi utama anda pada `main` terus berjalan.

Sintaks alternatif ialah URL penuh pull request:

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

Penggunaan dalam projek sebenar: memadankan `claude --worktree "#N"` dengan subagen penyemak kod anda sendiri memberikan semakan automatik dalam masa satu atau dua minit. Lancarkannya di latar belakang, teruskan kerja dalam tetingkap utama dan kembali kepada hasil melalui `claude agents`.

## Branch asas: `worktree.baseRef` untuk `fresh` atau `head`

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

Inti pati

Secara lalai, worktree bercabang daripada `origin/HEAD`—commit terkini yang disegerakkan daripada remote. Ini ialah permulaan yang selamat dan “bersih”. Jika mahu worktree merangkumi commit setempat belum dihantar, tetapkan `worktree.baseRef: "head"`. HEAD mengenal pasti commit; suntingan dijejaki belum dikomit kekal dalam salinan kerja asal dan memerlukan pemindahan jelas berasingan. Berguna apabila subagen perlu bekerja berasaskan ciri semasa anda tanpa bertukar ke main. Tetapan ini hanya menerima `fresh` atau `head`; ref sewenang-wenangnya tidak disokong.

</div>

Tetapan lalainya begini: setiap worktree baharu bermula daripada `origin/HEAD`. Kelebihannya ialah permulaan bersih yang pasti sepadan dengan perkara yang akan dilihat oleh CI. Kekurangannya ialah perubahan belum di-commit atau beberapa commit setempat yang mendahului remote pada branch semasa anda tidak akan disertakan dalam worktree baharu.

Untuk memulakan worktree daripada commit HEAD setempat semasa, tambah ini ke `.claude/settings.json` (atau tetapan global):

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

Kini `claude --worktree experimental-feature` bermula daripada `HEAD` setempat semasa. Ini berguna apabila ciri sudah mempunyai commit setempat belum dipush. Ia tidak merangkumi suntingan dijejaki yang masih belum dikomit. Jika subagen memerlukan suntingan itu, simpan dan pindahkan perubahan diperlukan secara jelas, kemudian periksa diff destinasi; jangan kelirukan pemindahan itu dengan `.worktreeinclude`, yang mengendalikan fail setempat diabaikan.

Tetapan ini menerima tepat dua nilai: `"fresh"` (= `origin/HEAD`) dan `"head"` (= HEAD setempat). Ref sewenang-wenangnya seperti `"feature-branch"` atau hash commit tidak disokong—sekatan ini disengajakan untuk mengelakkan ledakan gabungan pilihan.

## Mengasingkan subagen secara automatik: `isolation: worktree`

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

Inti pati

Subagen dalam Claude Code ialah agen khusus yang melaksanakan satu tugas (semakan kod, pemfaktoran semula, penyelidikan). Jika anda melancarkan beberapa subagen secara serentak daripada satu sesi, secara lalai mereka bekerja dalam folder yang sama dan boleh menindih fail satu sama lain. Tambahkan `isolation: worktree` pada frontmatter subagen untuk memberikannya worktree sementara yang akan dibuang dengan kemas apabila selesai jika tiada apa-apa yang telah di-commit.

</div>

Apabila anda memberitahu Claude “lancarkan tiga subagen: seorang membaca pangkalan data, yang kedua meneliti API dan yang ketiga menyemak ujian,” ketiga-tiganya bekerja dalam salinan kerja anda secara lalai. Jika dua daripadanya menulis pada fail yang sama pada masa yang sama, konflik akan berlaku. Penyelesaiannya ialah memberikan setiap seorang worktree sendiri secara automatik.

Kaedah 1: minta secara lisan. Tulis kepada Claude dalam perbualan:

```
Gunakan worktree untuk agen anda.
```

Claude akan menggunakan pengasingan untuk semua subagen seterusnya dalam sesi ini.

Kaedah 2: tetapkan secara jelas dalam subagen itu sendiri. Dalam fail subagen (contohnya, `.claude/agents/code-reviewer.md`), tambahkan medan pada frontmatter:

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

Anda seorang penyemak yang teliti. Baca diff dan cari ralat logik...
```

Kini setiap pelancaran subagen ini mendapat worktree sementara di `.claude/worktrees/`. Jika subagen tidak menulis apa-apa, folder itu dipadamkan secara automatik apabila ia selesai. Jika terdapat perubahan yang belum di-commit, Claude akan bertanya sama ada anda mahu menyimpan atau membuangnya.

Branch asas untuk worktree subagen sama seperti `--worktree`: secara lalai `origin/HEAD`; dengan `worktree.baseRef: head`, HEAD setempat.

## Matriks keputusan: worktree, `/bg`, subagen atau Agent View

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

Inti pati

Empat mekanisme Claude Code yang sering dikelirukan. Worktree ialah **pengasingan fail** (cakera). `/bg` ialah **sesi latar belakang** (konteks dan token). Subagen ialah **agen khusus sekali guna** (prompt dan alat). Agent View ialah **papan pemuka untuk semua sesi** (UI). Semuanya boleh digabungkan: `/bg` mencipta worktree secara automatik, subagen dengan `isolation: worktree` bermula dalam worktree sementara dan Agent View memaparkan ketiga-tiganya sebagai baris dalam satu senarai.

</div>

| Alat | Perkara yang diasingkan | Bila hendak menggunakannya |
|----|----|----|
| `claude --worktree <name>` | Fail (folder + branch berasingan) | Anda mahu mengekalkan N sesi serentak secara manual dalam terminal yang berbeza |
| `/bg` (atau `Ctrl+B`) | Konteks dan masa | Tugas panjang yang tidak sepatutnya menyekat tetingkap semasa. Worktree dicipta di sebalik tabir |
| Subagen dengan `isolation: worktree` | Fail dalam satu sesi | Satu prompt memberikan tugas kepada N agen dan anda perlu menghalang mereka daripada menindih kerja satu sama lain |
| `claude agents` (Agent View) | Tiada, ini UI | Anda mahu melihat semua sesi yang sedang berjalan / dijeda / selesai dalam satu papan pemuka |
| `/goal` | Pengurusan autonomi | Anda mahu Claude bekerja sehingga sesuatu syarat dipenuhi tanpa prompt daripada anda antara giliran |

Gabungan lazim:

- **“2 ciri serentak, secara manual”** — dua terminal, setiap satunya menjalankan `claude --worktree`. Kes paling mudah.
- **“Mulakan pemfaktoran semula semalaman; saya akan menutup aplikasi”** — `/bg` + `/goal` dengan syarat selesai. Sesi berjalan secara berasingan daripada tetingkap anda.
- **“Satu prompt, tiga penyiasatan serentak”** — tiga subagen dengan `isolation: worktree`. Setiap satu dalam ruang terasingnya sendiri.
- **“Apa yang sedang berjalan sekarang?”** — `claude agents`. Papan pemuka semua sesi dengan penapis “berjalan”, “disekat” dan “selesai”.

## 5 masalah lazim ketika bekerja dengan worktree

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

Inti pati

Masalah paling lazim: terlupa `.worktreeinclude` lalu persekitaran tidak berfungsi; menyangka worktree ialah branch biasa lalu kehilangan perubahan yang belum di-commit; mengekalkan 5+ sesi serentak lalu terlupa sesi mana berada di mana; tidak mengkonfigurasi `cleanupPeriodDays` sehingga folder lama bertimbun; dan terlupa dialog kepercayaan dalam direktori baharu, lalu `--worktree` gagal dengan ralat.

</div>

**1. Anda melancarkan worktree, `.env` tiada dan semuanya tidak berfungsi.** Masalah paling lazim. Worktree ialah checkout baharu tanpa fail yang diabaikan Git. Penyelesaiannya ialah menambahkan fail `.worktreeinclude` dengan `.env*` dan konfigurasi setempat yang diperlukan sebaik sahaja anda menyediakan mod worktree. Pastikan fail itu berada di akar repositori, bukan dalam `.claude/`.

**2. Anda mahu beralih ke branch utama, menjalankan `cd` ke akar dan kehilangan perubahan belum di-commit dalam worktree.** Folder akar dan worktree ialah dua salinan kerja yang **berbeza**. Anda kembali dengan `cd`; perubahan dalam worktree kekal di situ—ia tidak ke mana-mana. Tetapi jika anda keliru lalu menjalankan `git stash` dalam folder utama kerana menyangka anda berada dalam worktree, stash itu akan dibuat pada branch utama, bukan branch yang anda jangkakan.

**3. Anda melancarkan 5 sesi serentak dan tidak ingat lagi perkara yang sedang dilakukan setiap satu.** Dokumentasi Anthropic memberi amaran secara jelas bahawa kebanyakan pembangun tidak mampu menguruskan lebih daripada 2–3 sesi dari segi kognitif. Tanda anda sudah terbeban ialah membuka Agent View dan tidak dapat menyatakan serta-merta perkara yang sedang dilakukan setiap agen. Hadkan diri kepada dua sesi serentak. Jika tugas memerlukan lebih banyak, orkestrakannya melalui `/goal` + subagen, bukan secara manual.

**4. Worktree daripada `-p` (tanpa kepala) tidak dibersihkan secara automatik.** Arahan `claude --worktree feature-x -p "do thing"` tidak memaparkan prompt keluar interaktif, maka tiada ketika Claude bertanya “buang worktree?”. Worktree ini akan terkumpul. Bersihkannya secara manual: `git worktree remove .claude/worktrees/feature-x`. Atau gunakan skrip cron yang membuang apa-apa yang lebih lama daripada 7 hari.

**5. Dialog kepercayaan dalam folder baharu.** Jika anda membuka repositori buat kali pertama lalu terus menjalankan `claude --worktree`, arahan itu akan gagal. Jalankan `claude` tanpa bendera, terima kepercayaan ruang kerja dan keluar—kemudian `--worktree` akan berfungsi. Ini disengajakan supaya Claude tidak mendapat akses kepada projek orang lain tanpa persetujuan pengguna.

## Pembersihan: perkara yang dipadam secara automatik

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

Inti pati

Worktree daripada `--worktree` tanpa perubahan (tiada commit, fail tidak dijejak atau perubahan belum di-commit) akan dibuang secara automatik apabila anda keluar. Jika ada perubahan, Claude akan bertanya. Worktree daripada subagen dan `/bg` dibuang secara automatik oleh tamat masa `cleanupPeriodDays` dalam tetapan jika bersih. Worktree daripada `-p` langsung tidak dibersihkan—buang secara manual dengan `git worktree remove`.

</div>

Logik pembersihan bergantung pada perkara yang anda lakukan dalam worktree dan cara anda memulakan sesi. Dokumentasi Anthropic menyenaraikan tiga senario:

<figure>
<blockquote>
<p>Jika worktree tiada perubahan belum di-commit, fail tidak dijejak atau commit baharu, worktree dan branchnya akan dibuang secara automatik apabila anda keluar daripada sesi. Jika sesi mempunyai nama, Claude akan bertanya dan bukannya membuangnya supaya anda boleh menyimpan worktree itu untuk digunakan kemudian.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

Senario 1: anda masuk, tidak melakukan apa-apa dan keluar—worktree itu dibuang.

Senario 2: anda melakukan sedikit kerja tetapi tidak membuat commit—Claude akan bertanya “simpan atau buang?” apabila anda keluar. “Simpan” mengekalkan folder dan branch untuk digunakan kemudian. “Buang” memadam direktori **bersama-sama** perubahan belum di-commit dan commit baharu. Tindakan ini memusnahkan data—jangan klik “buang” kerana kebiasaan.

Senario 3: anda melancarkannya dengan `-p` (tanpa kepala), lalu arahan selesai dan keluar. Worktree itu kekal. Bersihkannya secara manual:

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

Selain itu, pembersihan latar belakang akan membuang worktree daripada subagen dan sesi `/bg` secara automatik jika worktree tersebut lebih lama daripada `cleanupPeriodDays` hari (tetapan yang lazimnya 30 hari secara lalai) **dan** tidak mengandungi kerja yang belum disimpan. Worktree daripada `--worktree` tidak disentuh oleh pembersihan automatik—tanggungjawab itu terletak pada anda.

## Alternatif untuk SVN, Perforce dan Mercurial: hook `WorktreeCreate`

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

Inti pati

Mod worktree menggunakan `git worktree` secara lalai. Untuk SVN, Perforce, Mercurial dan VCS lain, anda boleh menyambungkan mekanisme sendiri melalui hook `WorktreeCreate` dan `WorktreeRemove` dalam tetapan Claude Code. Hook menerima nama melalui stdin, mesti mencetak laluan direktori yang dicipta dan keluar dengan kod 0. Apabila anda menggunakan hook sendiri, `.worktreeinclude` tidak diproses—anda perlu menyalin fail setempat sendiri dalam hook tersebut.

</div>

Jika repositori menggunakan Subversion atau Mercurial, bendera `--worktree` tidak akan berfungsi secara langsung. Anthropic menyediakan titik sambungan melalui dua hook: `WorktreeCreate` (mencipta salinan terasing) dan `WorktreeRemove` (membuangnya).

Contoh hook SVN daripada dokumentasi rasmi:

```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 membaca nama worktree daripada stdin (`{ "name": "feature-auth" }`), menjalankan `svn checkout` ke direktori yang telah ditentukan dan mencetak laluan ke stdout—Claude Code menggunakannya sebagai direktori kerja untuk sesi baharu.

Perhatian penting: apabila menggunakan hook sendiri, `.worktreeinclude` tidak digunakan. Jika anda memerlukan `.env` atau fail lain yang diabaikan Git dalam folder baharu, salinnya dalam skrip hook itu sendiri.

## Seterusnya: tiga mekanisme selari yang berkaitan

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

Inti pati

Worktree menyediakan pengasingan fail. `/bg` menyediakan pengasingan konteks dan token. Subagen menyediakan pengasingan tugas dan alat. `/goal` menyediakan autonomi sehingga sesuatu syarat dipenuhi. Setiap satunya menyelesaikan satu masalah secara tersendiri. Digabungkan, semuanya membolehkan anda meneruskan 3–5 tugas serentak tanpa kejatuhan kognitif. Seterusnya, anda boleh meneroka panduan berkaitan mod autonomi, subagen tersuai dan aliran kerja dinamik melalui pautan di bawah.

</div>

Worktree memberikan pengasingan fail. `/bg` memberikan pengasingan konteks. Subagen memberikan pengasingan tugas. Setiap mekanisme menyelesaikan satu masalah secara tersendiri. Digabungkan, semuanya membolehkan anda mengusahakan tiga hingga lima tugas serentak tanpa kejatuhan kognitif. Inilah set kemahiran di sebalik vibe-coding lanjutan pada 2026.

Topik ini secara semula jadi bersambung kepada tiga perkara berkaitan: [cara menyediakan agen autonomi menggunakan `/goal` dan Agent View](https://ailoot.ai/blog/ms/claude-code-goal-agent-view/), [cara membina subagen sendiri untuk tugas anda](https://ailoot.ai/blog/ms/claude-code-subagents/) dan [cara melancarkan ratusan agen melalui Dynamic Workflows](https://ailoot.ai/blog/ms/claude-code-dynamic-workflows/).

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

### Sumber

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





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

## Soalan lazim: Git worktree dalam Claude Code: sesi selari

### Adakah baseRef head menyalin perubahan belum dikomit ke worktree baharu?

Tidak. Ia bermula daripada commit HEAD setempat semasa, termasuk commit setempat yang tiada pada remote. Suntingan dijejaki belum dikomit kekal dalam salinan kerja asal; pindahkan WIP diperlukan secara jelas dan periksa worktree baharu.

### Mengapakah .env tiada dalam worktree baharu?

Worktree ialah checkout baharu, maka fail setempat diabaikan Git tiada. `.worktreeinclude` Claude Code menyenaraikan fail diabaikan untuk disalin; hook WorktreeCreate tersuai mesti mengendalikan salinan itu sendiri. Sertakan fail yang benar-benar diperlukan tugasan sahaja.


## Ailoot · Syarikat dan portfolio projeknya

Ailoot berteraskan pengalaman operasi yang mantap, pangkalan pelanggan yang besar, perkhidmatan yang stabil dan pemantauan KPI berterusan.

Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.

Ailoot menggunakan pengalaman operasi ini untuk akses API kepada ciri AI dalam produk pelanggan, ejen, aplikasi dan automasi.
