Satu folder, dua agent: kerjaan jadi campur
Dulu satu folder repo sudah cukup.
Punya branch feat/x, checkout, kerja, commit, balik ke main. Kotor? Stash. Bentrok? Selesaiin dulu. Satu orang, satu tree, selesai.
Sekarang agent ikut nulis. Git-nya nggak berubah — branch tetap branch. Yang beda: di jam yang sama bisa ada lebih dari satu “tangan” nyentuh file.
Logo Git
Branch itu garis kerja
git branch + checkout masih cara biasa memisah apa yang dikerjakan.
mainbersihfix/loginbuat bugfeat/exportbuat fitur
Itu soal commit ke mana, PR dari mana, merge ke mana.
Satu folder — pindah branch berarti isi tree diganti
Yang sering kelewat: di satu clone biasa, cuma satu branch yang “hidup” di folder itu. Checkout = isi working tree diganti.
Agent lagi nulis di src/, saya tiba-tiba pindah branch — kacau. Atau sebaliknya: saya kira folder masih buat tugas A, ternyata agent sudah ubah setengah tree buat tugas B.
Branch memisah sejarah. Dia nggak otomatis memisah ruang kerja.
Worktree: folder lain, repo yang sama
git worktree nambah checkout di path terpisah. Satu repo, beberapa working directory. Tiap folder bisa duduk di branch berbeda tanpa saling timpa file.
Satu .git — banyak folder, checkout bisa jalan bareng
Kurang lebih:
# repo utama tetap di ~/proj (mis. main)
git worktree add ../proj-fix-login fix/login
git worktree add ../proj-feat-export -b feat/export main
Jadi:
~/proj— saya, atau agent A~/proj-fix-login— agent B~/proj-feat-export— agent C
Masih satu remote. Beda folder, beda dirty state. node_modules / build bisa beda per tree kalau di-install masing-masing.
Intinya buat saya: ganti tugas nggak harus menggeser isi folder yang lagi dipakai orang (atau agent) lain.
Kenapa baru kerasa belakangan
Waktu kerja masih manusia satu-satu, checkout + stash sudah oke. Agent beda ceritanya.
Sering jalan bareng — dua chat, cloud agent, atau agent + saya. Satu sesi bisa lama: banyak file, test jalan. Agent juga “percaya” folder yang dibuka itu miliknya. Diganti di balik layar, hasilnya campur.
Review juga lebih enak dari worktree yang isinya satu garis kerja, bukan tree yang sudah dicampur tiga eksperimen.
Branch tetap ada di tiap worktree. Bedanya: saya nggak harus “usir” pekerjaan lain dari disk cuma mau coba jalur kedua.
Kapan branch saja sudah cukup
Satu tugas, satu sesi, berurutan. Agent singkat: ubah kecil, commit, selesai. Atau saya memang nyaman stash / commit WIP sebelum pindah.
Kalau ritmenya masih linear, worktree cuma bikin ribet: folder ekstra, install ekstra, terus nanya “eh aku di folder mana?”
Kapan saya mulai pakai worktree
Agent A ngerjain fitur, saya (atau agent lain) perlu hotfix di branch lain. Eksperimen berisiko — refactor besar, upgrade dependency — tanpa ganggu tree harian. Beberapa agent Cursor / cloud, masing-masing diarahkan ke path sendiri. Atau perubahan lama “menginap” di folder, sementara saya balik ke main yang bersih.
Mental model saya sederhana: satu worktree ≈ satu konteks agent / satu PR aktif. Branch di dalamnya tetap nama yang akan di-push.
Yang sering bikin jebakan
Tiap tree bisa butuh npm install / build sendiri — monorepo langsung kerasa. Satu branch juga nggak bisa di-checkout di dua worktree sekaligus; biasa, buat branch baru atau selesaiin yang lama.
Salah folder itu sumber bug paling sering: terminal, editor, agent — cwd-nya harus sama. Setelah merge, git worktree remove; jangan numpuk folder zombie.
Dan worktree nggak menggantikan disiplin. Commit kecil, pesan jelas, PR sempit. Folder paralel nggak menyelamatkan PR yang campur aduk.
Bukan “ganti branch dengan worktree”
Branch tetap buat sejarah dan PR. Worktree buat folder di disk supaya nggak rebutan.
Yang berubah di era agent: frekuensinya. Lebih sering ada lebih dari satu “pekerja” nyentuh repo, jadi lebih sering butuh lebih dari satu working tree.
Kalau agent masih satu-satu dan berurutan, branch saja. Kalau sudah sering tabrakan di folder yang sama — coba git worktree add.
Komentar & Diskusi