Git Worktree: Jalankan Beberapa AI Coding Agent Sekaligus

Verdict Cepat

Git worktree bikin satu repository punya beberapa folder kerja aktif sekaligus. Setiap folder bisa diisi satu AI coding agent dengan branch masing-masing, jadi refactor, nulis test, dan perbaikan bug bisa berjalan paralel tanpa saling menimpa file. Perintah intinya cuma satu baris: git worktree add. Sisanya cuma soal kebiasaan merapikan folder dan memilih task yang benar-benar independen.

Artikel ini membahas konsep dasarnya, perintah yang dipakai sehari-hari, pola kerja paralel bersama agent seperti Claude Code, tabel perbandingan, sampai daftar kesalahan yang paling sering muncul di lapangan.

Masalah Lama: Satu Folder Dibagi Dua Agent

Alur vibe coding yang umum itu berurutan. Buka terminal, kasih task ke agent, tunggu lima sampai lima belas menit sementara dia membaca file, mengedit kode, dan menjalankan test. Selesai, review, commit, baru task kedua dimulai. Mesin kencang dipakai cuma segelintir persen kemampuannya.

Lalu bagaimana kalau terminal kedua dibuka dan agent lain dijalankan di folder yang sama? Rawan sekali. Ada empat kegagalan klasik yang paling sering dilaporkan praktisi, sebagaimana dirangkum panduan orkestrasi agent dari Augment Code:

  • File ketimpa diam-diam. Agent A menyimpan OrderService.java tepat saat Agent B masih membaca versi lamanya. Tidak ada error yang muncul, hanya hasil akhir yang aneh.
  • Konteks basi. Perubahan Agent A membuat asumsi kerja Agent B tidak berlaku lagi, dan B tidak pernah diberi tahu. Kerusakannya baru kelihatan saat hasil kedua agent digabung.
  • Race condition. Dua agent menjalankan build atau test yang sama bersamaan, saling berebut cache, resource, dan database test.
  • Lock git bentrok. Git memakai lock file untuk melindungi index. Operasi bersamaan memunculkan error index.lock, dan kalau prosesnya crash, lock itu nyangkut sampai dihapus manual sementara semua agent lain ikut macet.

Solusi untuk semua ini sebenarnya sudah lama ada. Panduan resmi Git tentang worktree mencatat fiturnya hadir sejak versi 2.5 tahun 2015. Selama lebih dari satu dekade fitur ini jarang disentuh karena manusia jarang butuh lima branch aktif dalam waktu yang sama. Era agent coding mengubah hitungannya.

Perhitungan waktunya gampang dibayangkan. Lima task dengan rata-rata sepuluh menit per agent butuh lima puluh menit kalau dikerjakan berurutan. Dengan worktree, totalnya turun jadi sekitar sepuluh menit ditambah durasi review. Selisihnya makin terasa saat ada task panjang seperti migrasi besar yang ikut masuk antrean.

Apa Itu Git Worktree Sebenarnya

Worktree adalah folder kerja tambahan yang menempel ke repository yang sama. Bayangkan begini: alih-alih clone repo lima kali dan menyimpan lima salinan riwayat git, worktree membuat lima checkout ringan yang berbagi satu database objek git.

Tiap worktree punya HEAD sendiri, index sendiri, dan foldernya sendiri. Yang dibagi hanya riwayat commit, refs, config, dan remote. Konsekuensi praktisnya:

  • Commit dari worktree mana pun langsung terlihat di worktree lain karena object store-nya sama.
  • Ruang disk yang terpakai sebanding ukuran file kerja, bukan ukuran riwayat.
  • Git melarang branch yang sama dicheckout di dua worktree sekaligus. Anggap ini pengaman, bukan hambatan.
Layar laptop dengan kode program sebagai ilustrasi folder kerja paralel pada git worktree
Tiap worktree adalah folder biasa yang menempel ke satu repository. (Sumber: Unsplash)

Setup Pertama dalam Dua Menit

Dari folder utama proyek, jalankan:

git worktree add ../proyek-refactor -b fitur/refactor-grid
git worktree add ../proyek-tests -b fitur/tests-api
git worktree list

Perintah pertama membuat folder proyek-refactor di sebelah folder utama, lengkap dengan branch baru bernama fitur/refactor-grid. Perintah kedua sama saja untuk task test. Perintah ketiga menampilkan daftar semua worktree aktif beserta branch dan path-nya.

Banyak developer menyimpan worktree di folder khusus di sebelah repo utama supaya rapi, misalnya proyek/worktrees/. Penempatan bebas, yang penting konsisten. Saya sendiri memilih menaruh worktree sebagai folder saudara repo utama, misalnya proyek dan proyek-worktrees berdampingan. Saat mencari folder lewat quick open di editor, langsung kebaca mana repo utama dan mana worktree. Detail kecil yang menghemat waktu tiap hari.

Selesai bekerja, rapikan:

git worktree remove ../proyek-refactor

Branch hasil merge tetap aman karena riwayatnya tersimpan di database objek bersama. Foldernya hilang, pekerjaannya tidak ikut hilang. Satu hal yang perlu diingat: jangan paksa dua worktree memegang branch yang sama dengan flag paksa. Pengaman itu yang mencegah dua workspace saling menimpa status.

Pola Kerja Paralel Bersama AI Agent

Claude Code punya dukungan bawaan lewat flag --worktree yang bisa dipendekkan jadi -w. Session langsung berjalan di worktree terisolasi tanpa setup manual. Cara manual juga sah: buka tiap folder worktree di terminal terpisah, lalu jalankan agent dari sana.

# Terminal 1, folder utama
cd ~/code/proyek && claude

# Terminal 2, worktree task test
cd ~/code/proyek/worktrees/proyek-tests && claude

# Terminal 3, worktree refactor
cd ~/code/proyek/worktrees/proyek-refactor && claude

Tool lain mengikuti pola serupa. Cursor cukup dibuka ke folder worktree sebagai workspace. Copilot CLI dijalankan dari dalam folder worktree. Prinsipnya sederhana: worktree hanyalah direktori biasa, tool apa pun yang bekerja per direktori bisa dipakai. Satu praktisi .NET bahkan mendokumentasikan rutinitas lima agent paralel lewat pendekatan ini dan melapor lonjakan throughput sekitar lima kali lipat di tulisannya di DEV Community.

Kalau layar sering penuh sesama terminal, kelola sesi dengan multiplexer seperti tmux atau tab Windows Terminal. Satu pane untuk satu worktree, beri nama window sesuai branch supaya cepat melompat. Saya juga menempelkan prompt awal yang spesifik di tiap sesi: sebutkan file sasaran, definisi selesai, dan test yang harus lolos. Prompt tajam sejak awal memangkas arah maju mundur di tengah jalan.

Yang menentukan hasil bukan tool-nya tapi pemilihan task. Task yang cocok untuk paralel itu independen: beda file, beda concern, tanpa rantai dependensi. Contoh kombinasi sehat untuk satu sesi: refactor komponen grid, menambah integration test untuk endpoint, memperbaiki pipeline CSS, memperbarui dokumentasi API. Contoh kombinasi buruk: dua task yang sama-sama menyentuh service layer, karena konfliknya cuma ditunda sampai waktu merge.

Boris Cherny, pencipta Claude Code, menyebut worktree sebagai tips produktivitas nomor satu pribadinya. Dia menjalankan tiga sampai lima worktree sekaligus dan menilai pola ini paling berguna untuk perubahan besar dalam satu lemparan seperti migrasi kode lintas codebase.

Cara Merge Hasil Kerja Semua Agent

Fase merge adalah momen penting yang sering diremehkan. Urutannya begini. Pertama, review diff tiap worktree satu per satu selagi agent lain masih boleh jalan. Kedua, jalankan test suite di worktree yang lolos review. Ketiga, merge ke branch utama satu per satu:

git checkout main
git merge fitur/refactor-grid
git merge fitur/tests-api

Setelah semua masuk, hapus worktree yang sudah selesai. Kalau pemilihan task dari awal benar, merge biasanya bersih. Konflik kecil tetap mungkin, dan penyelesaiannya sama seperti alur merge biasa. Kunci utamanya tetap satu: task independen sejak planning.

Saya pernah kena konflik ringan karena dua task sama-sama menyentuh file routing. Selesainya lima menit lewat alur merge standar, tapi pelajarannya jelas: kata independen itu soal file, bukan cuma soal fitur. Sekarang tiap task baru dicek dulu, file mana saja yang kemungkinan besar disentuh, baru diputuskan masuk slot paralel atau antre berurutan.

Tabel Perbandingan: Satu Folder vs Clone vs Worktree

Aspek Satu folder dibagi agent Clone terpisah Git worktree
Konflik file saat kerja Sering dan diam-diam Aman Aman
Ruang disk Paling hemat Boros, riwayat dobel Hemat, riwayat dibagi
Sinkron commit antar workspace Otomatis, satu folder Perlu fetch dan push manual Instan, satu object store
Jumlah riwayat git Satu Sesuai jumlah clone Satu, dibagi semua
Cocok untuk Hindari Isolasi total, config beda Agent paralel harian

Kesalahan Umum dan Cara Menghindarinya

  1. Lupa install dependency di worktree baru. Folder node_modules tidak ikut terbawa. Jalankan npm ci sekali di awal. Proyek Python butuh virtualenv sendiri per worktree.
  2. Memilih task yang diam-diam bergantungan. Dua task yang sama-sama mengubah skema database pasti bertabrakan saat merge. Kalau memang harus begitu, jalankan berurutan saja.
  3. Port server bentrok. Dua dev server memakai port yang sama, salah satunya gagal start. Override port lewat environment variable atau argumen CLI saat menjalankan server.
  4. Migrasi database berjalan paralel. Dua agent yang sama-sama menjalankan migrasi ke satu database akan berebut lock. Aturannya simpel: satu worktree yang pegang database, sisanya kerja kode saja. Alternatifnya siapkan instance Postgres terpisah per worktree lewat docker-compose.
  5. Menumpuk worktree tak terpakai. Folder lama yang terlupakan membuat daftar worktree panjang dan disk membengkak. Rapikan dengan git worktree remove begitu merge selesai.
  6. Hook git yang berasumsi. Hook seperti husky dijalankan di setiap worktree, padahal folder dependency baru mungkin belum terpasang. Pastikan script bootstrap jalan sebelum commit pertama.

Kapan Worktree Justru Ribet

Worktree bukan jawaban untuk semuanya. Beberapa situasi lebih baik tanpa itu:

  • Proyek kecil dengan satu perubahan kecil. Menyiapkan dua folder untuk satu edit ringkas itu overhead murni.
  • Task yang saling bergantungan. Kalau task B butuh hasil task A, paralel hanya menunda konflik ke fase merge.
  • Laptop dengan RAM pas-pasan. Build aktif per worktree bisa menghabiskan 2 sampai 4 GB. Lima worktree dengan build bersamaan nyaman di mesin 32 GB.
  • Repo monolitik raksasa. Tiap worktree melakukan checkout penuh sehingga I/O disk berlipat. Kombinasikan dengan sparse-checkout kalau memang terpaksa.
Meja kerja dengan dua monitor untuk mengelola beberapa sesi AI coding agent secara paralel
Dua layar memudahkan memantau dua agent sekaligus. (Sumber: Unsplash)

Penutup: Mulai dari Dua Terminal

Saya memakai pola ini untuk pekerjaan mingguan dan yang paling terasa bukan sekadar kecepatan mentah, tapi tenangnya. Tidak ada lagi momen menatap satu terminal sambil empat task menunggu giliran. Cukup tulis prompt yang jelas per worktree, lalu review diff satu per satu saat tiap agent selesai.

Untuk mulai besok, coba resep kecil: satu worktree untuk refactor ringan, satu untuk menambah test. Merge satu per satu sambil menjalankan test suite. Setelah kebiasaan ini mantap, naikkan ke tiga atau empat agent. Pemahaman soal memberi konteks yang tepat ke agent bisa lanjut di panduan context engineering untuk vibe coding, sedangkan pengenalan tool terminalnya ada di panduan Claude Code CLI untuk pemula. Kalau lebih suka bekerja di editor, ulasan Windsurf sebagai IDE vibe coding bisa jadi titik awal. Pendekatan refleksi diri pada agent juga dibahas di artikel self-correcting AI agent.

Selamat mencoba. Pulang kerja meninggalkan beberapa branch rapi yang tinggal direview itu ternyata rasa yang bikin nagak.

Leave a Reply

You might