Mengenal Git Worktree
Halo! Kamu mau belajar git worktree dari awal banget, mulai teori, konsep, pro cons, use case, sampai implementasi real step-by-step yang lengkap. Saya buatkan panduan super detail ini khusus buat kamu. Semua penjelasan pakai bahasa Indonesia yang mudah dipahami, tapi istilah teknis Git tetap dalam bahasa Inggris (karena itu standar di seluruh dunia).
Saya susun secara terstruktur biar mudah diikuti. Siapkan laptop kamu, Git sudah terinstall (minimal versi 2.5+), dan kita mulai!
1. Teori Dasar Git Worktree
Secara teori, Git dirancang dengan asumsi satu repository = satu working directory (folder tempat kamu edit file). Ini disebut main worktree (pohon kerja utama) yang dibuat saat git init atau git clone.
Git Worktree adalah fitur resmi Git (sejak Git 2.5) yang memungkinkan satu repository memiliki banyak working directory sekaligus. Setiap working directory ini disebut linked worktree (worktree terhubung).
Intinya:
Semua worktree berbagi repository yang sama (satu folder
.git).Masing-masing worktree punya:
HEADsendiriIndex (staging area) sendiri
Working files sendiri
Perubahan commit di satu worktree langsung terlihat di worktree lain (karena history-nya shared).
Ini berbeda dengan:
git clonebiasa β duplikasi full repo (boros disk).git stash+git switchβ ribet kalau banyak perubahan.
Fitur ini masih dianggap βexperimentalβ di dokumentasi resmi Git, tapi sudah sangat stabil dan dipakai luas di industri.
2. Konsep Kerja di Balik Layar (How It Works)
Shared repository: Semua worktree pakai
$GIT_DIRyang sama (biasanya folder.gitdi main worktree).Per-worktree metadata: Tiap linked worktree punya folder di dalam
.git/worktrees/<nama-worktree>/yang menyimpanHEAD,index, dll.File
.gitdi linked worktree: Bukan folder, tapi file teks yang berisi pointer:Ref sharing:
Branch, tag, remote refs β shared (sama di semua worktree).
HEAD, index β per-worktree (berbeda-beda).
Locked worktree: Bisa dikunci supaya tidak bisa di-prune (dihapus otomatis).
Konsep ini membuat worktree ringan dan cepat dibanding clone berkali-kali.
3. Kelebihan (Pros)
Berikut kelebihan utama berdasarkan pengalaman developer dan dokumentasi:
1
Parallel development tanpa ganggu
Bisa kerja di 2β3 branch sekaligus tanpa stash, commit sementara, atau switch bolak-balik.
2
Hemat ruang disk
Hanya 1 .git (shared), worktree baru hanya copy file yang berbeda (bisa hemat 80β90% dibanding clone).
3
Review PR / hotfix super cepat
Buka PR orang lain di worktree terpisah, tanpa mengganggu kerja utama di main.
4
Cocok untuk AI agents / multi-tasking
Tiap agent punya folder sendiri β tidak saling tabrak.
5
Side-by-side comparison
Bisa jalankan 2 build atau test di 2 folder berbeda sekaligus.
6
Tidak duplikasi fetch/push
git fetch di satu tempat langsung update semua worktree.
4. Kekurangan (Cons) & Gotchas
Tidak ada fitur sempurna. Ini kekurangannya:
1
Bisa bingung banyak folder
Beri nama folder yang jelas (contoh: feature-auth, hotfix-login).
2
Disk masih bisa membengkak
Tiap worktree punya copy file. Jangan lupa git worktree remove setelah selesai.
3
Beberapa IDE/tool assume single dir
VS Code, IntelliJ, dll biasanya oke, tapi extension tertentu perlu setting ulang.
4
Submodule support belum sempurna
Hindari worktree kalau project banyak submodule.
5
Main worktree tidak bisa dihapus/move
Hanya linked worktree yang bisa.
6
Manual move folder bisa rusak
Harus pakai git worktree move atau git worktree repair.
Best practice: Prune secara rutin (git worktree prune) dan lock worktree kalau di USB/network drive.
5. Use Case / Kasus Penggunaan Real World
Berikut contoh nyata yang paling sering dipakai:
Emergency hotfix (contoh klasik dari docs Git) Sedang coding di
feature-bigtapi bos minta fix bug dimainβ buat worktree khusus hotfix.Review PR teman
git worktree add ../pr-123 origin/pr-123β review tanpa ganggu kerja sendiri.Parallel feature development Kerja di 2 fitur besar sekaligus (misal frontend + backend).
Machine Learning / Experiment Tiap hyperparameter atau model di branch berbeda β worktree terpisah.
AI Coding Agents (2025β2026 trend) Tiap agent (Claude, Cursor, dll) punya worktree sendiri β tidak saling tabrak context.
Demo / Presentasi Siapkan beberapa fitur di worktree berbeda, tinggal ganti folder saat demo.
Monorepo besar Satu repo besar untuk banyak produk β pakai worktree tiap produk.
6. Implementasi Real Step-by-Step (Praktik Langsung)
Kita praktik bareng. Ikuti persis ya!
Langkah 0: Persiapan (Buat repo contoh)
Langkah 1: Lihat worktree saat ini
Output:
Langkah 2: Buat worktree baru (paling sering dipakai)
Ada beberapa variasi:
a. Buat worktree + branch baru dengan nama sama
b. Buat worktree dengan nama folder berbeda
c. Checkout branch existing (dari remote)
d. Detached HEAD (untuk testing commit tertentu)
e. Orphan branch (kosong total)
Masuk ke folder worktree:
Langkah 3: Kerja di worktree
Edit file, commit seperti biasa. Commit akan muncul di semua worktree.
Langkah 4: Lihat semua worktree
Atau format machine-readable:
Langkah 5: Lock worktree (supaya tidak terhapus otomatis)
Langkah 6: Unlock
Langkah 7: Pindah worktree (move)
Langkah 8: Hapus worktree (paling penting!)
Kalau masih ada perubahan belum di-commit:
Langkah 9: Prune (bersihkan metadata stale)
Langkah 10: Repair (kalau folder dipindah manual)
Tips Tambahan untuk Pemakaian Sehari-hari
Letakkan worktree di luar folder repo utama (contoh:
../nama-feature) β lebih rapi.Alias di shell (tambahkan ke
~/.bashrcatau~/.zshrc):Kalau pakai VS Code: buka folder worktree secara terpisah.
Untuk monorepo + bare clone (advanced):
git clone --baredulu, lalu tambah worktree.
Penutup & Latihan
Sekarang kamu sudah paham dari teori sampai praktik git worktree secara lengkap!
Latihan rumah:
Clone repo GitHub kamu.
Buat 3 worktree:
main,feature-1,hotfix.Commit di masing-masing β lihat perubahannya shared.
Hapus semua worktree setelah selesai.
Kalau ada yang kurang jelas, error saat praktik, atau mau contoh kasus spesifik (misalnya dengan submodule, monorepo, atau AI agent), langsung tanya saja ya! Saya bisa bantu debug atau kasih script automation.
Selamat belajar! π
Sekarang coba jalankan git worktree add pertama kamu dan balas di sini hasilnya. Saya tunggu!
Last updated