> ## Documentation Index
> Fetch the complete documentation index at: https://cli.fuxicode.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Jalankan sesi paralel dengan worktrees

> Isolasi sesi Fuxi Code paralel dalam git worktrees terpisah sehingga perubahan tidak bertabrakan. Mencakup flag `--worktree`, isolasi subagent, `.worktreeinclude`, pembersihan, dan hook VCS non-git.

[git worktree](https://git-scm.com/docs/git-worktree) adalah direktori kerja terpisah dengan file dan cabang sendiri, berbagi riwayat repositori dan remote yang sama dengan checkout utama Anda. Menjalankan setiap sesi Fuxi Code dalam worktree-nya sendiri berarti edit dalam satu sesi tidak akan pernah menyentuh file di sesi lain, sehingga Anda dapat memiliki Fuxi membangun fitur di satu terminal sambil memperbaiki bug di terminal kedua.

Halaman ini mencakup isolasi worktree di CLI. Semuanya di bawah mengasumsikan repositori git. Untuk sistem kontrol versi lainnya, lihat [Non-git version control](#non-git-version-control). [Aplikasi desktop](/id/desktop#work-in-parallel-with-sessions) membuat worktree untuk setiap sesi baru secara otomatis.

Worktrees adalah salah satu dari beberapa cara untuk menjalankan Fuxi secara paralel. Mereka mengisolasi edit file, sementara [subagents](/id/sub-agents) dan [agent teams](/id/agent-teams) mengoordinasikan pekerjaan itu sendiri. Lihat [Run agents in parallel](/id/agents) untuk membandingkan pendekatan, atau lompat ke [Isolate subagents with worktrees](#isolate-subagents-with-worktrees) untuk menggunakan worktrees dan subagents bersama-sama.

<h2 id="start-fuxi-in-a-worktree">
  Mulai Fuxi dalam worktree
</h2>

Lewatkan `--worktree` atau `-w` untuk membuat worktree terisolasi dan memulai Fuxi di dalamnya. Secara default, worktree dibuat di bawah `.fuxi/worktrees/<value>/` di root repositori Anda, pada cabang baru bernama `worktree-<value>`:

```bash theme={null}
fuxi --worktree feature-auth
```

Untuk menempatkan worktrees di tempat lain, konfigurasikan hook [`WorktreeCreate`](#non-git-version-control). Jalankan perintah lagi dengan nama berbeda di terminal lain untuk memulai sesi terisolasi kedua:

```bash theme={null}
fuxi --worktree bugfix-123
```

Jika Anda menghilangkan nama, Fuxi menghasilkan satu seperti `bright-running-fox`:

```bash theme={null}
fuxi --worktree
```

Anda juga dapat meminta Fuxi untuk "bekerja dalam worktree" selama sesi, dan itu akan membuat satu dengan tool [`EnterWorktree`](/id/tools-reference). Setelah berada dalam worktree, Fuxi dapat beralih langsung ke worktree lain di bawah `.fuxi/worktrees/` dengan memanggil `EnterWorktree` dengan jalur target. Worktree sebelumnya tetap berada di disk tanpa disentuh.

{/* min-version: 2.1.198 */}Mulai dari v2.1.198, memasuki atau keluar dari worktree juga memindahkan transkrip sesi ke penyimpanan proyek direktori tersebut, dengan cara yang sama seperti [`/cd`](/id/commands) melakukannya, sehingga `/desktop` dan `--resume` menemukan sesi di sana setelahnya. Worktrees yang dibuat oleh hook [`WorktreeCreate`](#non-git-version-control) dikecualikan dan menyimpan transkrip di direktori peluncuran.

Sebelum menggunakan `--worktree` secara interaktif di direktori untuk pertama kalinya, terima dialog kepercayaan workspace dengan menjalankan `fuxi` sekali di direktori tersebut. Jika kepercayaan belum diterima, `--worktree` keluar dengan kesalahan dan meminta Anda untuk menjalankan `fuxi` di direktori terlebih dahulu. Jalankan non-interaktif dengan `-p` melewati [pemeriksaan kepercayaan](/id/security), jadi `fuxi -p --worktree` melanjutkan tanpanya.

Jika Fuxi Code tidak dapat memasuki direktori worktree saat startup, misalnya karena hook [`WorktreeCreate`](/id/hooks#worktreecreate) mencetak sesuatu selain direktori yang dibuat, atau karena direktori dihapus setelah diatur, Fuxi Code mencetak kesalahan yang menamai jalur dan keluar dengan kode 1. Sebelum v2.1.205, ini menghancurkan sesi, dan dengan `-p` itu terhenti selama sekitar 30 detik sebelum keluar dengan kode 0.

{/* min-version: 2.1.200 */}Plugin yang diinstal pada [cakupan proyek](/id/plugins-reference#plugin-installation-scopes) dari checkout utama juga dimuat dalam worktrees dari repositori yang sama, sehingga Anda tidak perlu menginstal ulang per worktree. Ini berlaku apakah Anda membuat worktree dengan `--worktree` atau dengan `git worktree add`. Memerlukan Fuxi Code v2.1.200 atau lebih baru.

<Tip>
  Tambahkan `.fuxi/worktrees/` ke `.gitignore` Anda sehingga konten worktree tidak muncul sebagai file yang tidak dilacak dalam checkout utama Anda.
</Tip>

<h3 id="choose-the-base-branch">
  Pilih cabang dasar
</h3>

Worktrees bercabang dari cabang default repositori Anda, `origin/HEAD`, sehingga mereka dimulai dari pohon bersih yang cocok dengan remote. Jika tidak ada remote yang dikonfigurasi atau pengambilan gagal, worktree kembali ke `HEAD` lokal Anda saat ini. Untuk selalu bercabang dari `HEAD` lokal, atur `worktree.baseRef` ke `"head"` dalam [settings](/id/settings#worktree-settings). Mengatur `baseRef` ke `"head"` membuat worktree baru membawa commit yang belum didorong dan status cabang fitur Anda, yang berguna saat mengisolasi subagent yang perlu beroperasi pada pekerjaan yang sedang berlangsung. Pengaturan hanya menerima `"fresh"` atau `"head"`, bukan git refs arbitrer:

```json theme={null}
{
  "worktree": {
    "baseRef": "head"
  }
}
```

Untuk bercabang dari pull request tertentu, lewatkan nomor PR dengan awalan `#`, atau URL pull request GitHub lengkap. Fuxi Code mengambil `pull/<number>/head` dari `origin` dan membuat worktree di `.fuxi/worktrees/pr-<number>`:

```bash theme={null}
fuxi --worktree "#1234"
```

Untuk kontrol penuh atas cara pembuatan worktrees, konfigurasikan hook [`WorktreeCreate`](/id/hooks#worktreecreate), yang menggantikan logika `git worktree` default sepenuhnya.

<h2 id="copy-gitignored-files-into-worktrees">
  Salin file yang diabaikan git ke dalam worktrees
</h2>

Worktree adalah checkout segar, jadi file yang tidak dilacak seperti `.env` atau `.env.local` dari repositori utama Anda tidak ada. Untuk menyalinnya secara otomatis saat Fuxi membuat worktree, tambahkan file `.worktreeinclude` ke root proyek Anda.

File menggunakan sintaks `.gitignore`. Hanya file yang cocok dengan pola dan juga diabaikan git yang disalin, sehingga file yang dilacak tidak pernah diduplikasi.

`.worktreeinclude` ini menyalin dua file env dan konfigurasi rahasia ke setiap worktree baru:

```text .worktreeinclude theme={null}
.env
.env.local
config/secrets.json
```

Ini berlaku untuk worktrees yang dibuat dengan `--worktree`, [subagent worktrees](#isolate-subagents-with-worktrees), dan sesi paralel dalam [aplikasi desktop](/id/desktop#work-in-parallel-with-sessions).

<h2 id="isolate-subagents-with-worktrees">
  Isolasi subagents dengan worktrees
</h2>

Subagents dapat berjalan dalam worktrees mereka sendiri sehingga edit paralel tidak bertabrakan. Minta Fuxi untuk "gunakan worktrees untuk agen Anda", atau atur secara permanen pada [subagent kustom](/id/sub-agents#supported-frontmatter-fields) dengan menambahkan `isolation: worktree` ke frontmatter. Setiap subagent mendapatkan worktree sementara yang dihapus secara otomatis saat subagent selesai tanpa perubahan.

Worktrees subagent menggunakan [base branch](#choose-the-base-branch) yang sama dengan `--worktree`, jadi mereka membuat cabang dari branch default repositori Anda kecuali `worktree.baseRef` diatur ke `"head"`.

<h2 id="clean-up-worktrees">
  Bersihkan worktrees
</h2>

Saat Anda keluar dari sesi worktree, pembersihan tergantung pada apakah Anda membuat perubahan:

* **Tidak ada perubahan yang belum dilakukan, tidak ada file yang tidak dilacak, dan tidak ada commit baru**: worktree dan cabangnya dihapus secara otomatis. Jika sesi memiliki [nama](/id/sessions#name-your-sessions), Fuxi malah meminta sehingga Anda dapat menyimpan worktree untuk nanti
* **Perubahan yang belum dilakukan, file yang tidak dilacak, atau commit baru ada**: Fuxi meminta Anda untuk menyimpan atau menghapus worktree. Menyimpan mempertahankan direktori dan cabang sehingga Anda dapat kembali nanti. Menghapus menghapus direktori worktree dan cabangnya, membuang semua perubahan yang belum dilakukan, file yang tidak dilacak, dan commit
* **Jalankan non-interaktif**: worktrees yang dibuat dengan `--worktree` bersama dengan `-p` tidak dibersihkan secara otomatis karena tidak ada prompt keluar. Hapus dengan `git worktree remove`

Worktrees yang Fuxi buat untuk subagent dan [sesi latar belakang](/id/agent-view#how-file-edits-are-isolated) dihapus secara otomatis setelah mereka lebih tua dari pengaturan [`cleanupPeriodDays`](/id/settings#available-settings) Anda, asalkan mereka tidak memiliki perubahan yang belum dilakukan, tidak ada file yang tidak dilacak, dan tidak ada commit yang belum didorong. Worktrees yang Anda buat dengan `--worktree` tidak pernah dihapus oleh sapuan ini.

Saat agen sedang berjalan, Fuxi menjalankan `git worktree lock` pada worktreenya sehingga pembersihan bersamaan tidak dapat menghapusnya. Kunci dilepaskan ketika agen selesai. Untuk membersihkan worktree yang disimpan oleh sapuan, jalankan `git worktree remove`, tambahkan `--force` jika worktree memiliki perubahan yang belum dilakukan atau file yang tidak dilacak.

Di Windows, sebelum menghapus worktree, Fuxi Code menghapus sambungan NTFS atau symlink direktori apa pun pada kedalaman apa pun di dalamnya sebagai entri tautan, sehingga menghapus worktree tidak menghapus file yang ditunjuk tautan. Sebelum v2.1.205, Fuxi Code hanya menghapus tautan tingkat atas sebagai entri tautan, dan menghapus worktree dengan sambungan yang bersarang di subdirektori dapat menghapus isi direktori yang ditunjuk tautan di luar worktree.

<h2 id="manage-worktrees-manually">
  Kelola worktrees secara manual
</h2>

Untuk kontrol penuh atas lokasi worktree dan konfigurasi cabang, buat worktrees dengan Git secara langsung. Ini berguna saat Anda perlu checkout cabang yang ada tertentu atau menempatkan worktree di luar repositori.

Buat worktree pada cabang baru:

```bash theme={null}
git worktree add ../project-feature-a -b feature-a
```

Buat worktree dari cabang yang ada:

```bash theme={null}
git worktree add ../project-bugfix bugfix-123
```

Mulai Fuxi dalam worktree:

```bash theme={null}
cd ../project-feature-a && fuxi
```

Daftar worktrees Anda:

```bash theme={null}
git worktree list
```

Hapus satu saat Anda selesai dengannya:

```bash theme={null}
git worktree remove ../project-feature-a
```

Lihat [dokumentasi Git worktree](https://git-scm.com/docs/git-worktree) untuk referensi perintah lengkap. Ingat untuk menginisialisasi lingkungan pengembangan Anda di setiap worktree baru: instal dependensi, atur lingkungan virtual, atau jalankan apa pun yang diperlukan setup proyek Anda.

<h2 id="non-git-version-control">
  Non-git version control
</h2>

Isolasi worktree menggunakan git secara default. Untuk SVN, Perforce, Mercurial, atau sistem lainnya, konfigurasikan hook [`WorktreeCreate` dan `WorktreeRemove`](/id/hooks#worktreecreate) untuk menyediakan logika pembuatan dan pembersihan kustom. Karena hook menggantikan perilaku git default, [`.worktreeinclude`](#copy-gitignored-files-into-worktrees) tidak diproses saat Anda menggunakan `--worktree`. Salin file konfigurasi lokal apa pun di dalam skrip hook Anda.

Hook `WorktreeCreate` ini membaca nama worktree dari stdin, checkout salinan kerja SVN segar, dan mencetak jalur direktori sehingga Fuxi Code dapat menggunakannya sebagai direktori kerja sesi:

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

Pasangkan dengan hook `WorktreeRemove` untuk membersihkan saat sesi berakhir. Lihat [referensi hooks](/id/hooks#worktreecreate) untuk skema input dan contoh penghapusan.

<h2 id="see-also">
  Lihat juga
</h2>

Worktrees menangani isolasi file. Halaman terkait di bawah mencakup pendelegasian pekerjaan ke checkout terisolasi tersebut dan beralih antar sesi yang Anda buat:

* [Subagents](/id/sub-agents): delegasikan pekerjaan ke agen terisolasi dalam sesi
* [Agent teams](/id/agent-teams): koordinasikan beberapa sesi Fuxi secara otomatis
* [Manage sessions](/id/sessions): beri nama, lanjutkan, dan beralih antar percakapan
* [Desktop parallel sessions](/id/desktop#work-in-parallel-with-sessions): sesi yang didukung worktree dalam aplikasi desktop
