Dipublikasikan 4 Juni 2026
Sebagai developer, pernahkah kamu sedang mengerjakan fitur besar di branch feature/login, lalu tiba-tiba harus fix bug urgent di main? Solusi paling umum adalah git stash, tapi seringkali stash list jadi berantakan dan sulit dilacak. Ada cara lebih elegan: Git Worktree.
Dengan Git Worktree, kamu bisa checkout multiple branch ke direktori terpisah dalam satu repository. Artinya, kamu bisa membuka dua (atau lebih) branch secara bersamaan tanpa perlu stash atau clone ulang repository. Artikel ini akan membahas konsep mendalam, perintah dasar, hingga workflow praktis yang bisa langsung kamu terapkan di project sehari-hari.
Git Worktree adalah fitur bawaan Git yang memungkinkan kamu mengekstrak working tree dari branch tertentu ke direktori terpisah. Setiap worktree memiliki index dan HEAD sendiri, sehingga perubahan di satu worktree tidak mengganggu worktree lainnya. Secara teknis, worktree berbagi object database (.git/objects) dan refs (.git/refs) dengan repository utama, sehingga lebih hemat disk dibanding clone penuh.
Keunggulan utama Git Worktree:
Tidak perlu stash saat berpindah branch secara tiba-tiba
Tidak perlu clone repository berkali-kali yang memboros disk space
Cocok untuk project dengan multi-environment seperti dev, staging, dan hotfix
Lebih cepat dibanding multiple clone karena object database dibagi
Memungkinkan test build di branch berbeda secara paralel
Git Worktree tersedia sejak Git 2.5, jadi hampir semua instalasi Git modern sudah mendukungnya. Untuk memastikan, cek versi Git kamu dengan perintah berikut:
git --versionJika versi di atas 2.5, kamu siap melanjutkan. Worktree bekerja optimal untuk repository dengan banyak branch aktif atau project monorepo yang memerlukan build terpisah. Beberapa IDE modern seperti VS Code dan IntelliJ IDEA sudah mendukung worktree secara native, meskipun terkadang perlu restart workspace agar indexing berjalan sempurna.
Ketika kamu menjalankan git worktree add, Git membuat direktori baru yang berisi snapshot working tree dari branch target. Di dalam direktori tersebut, Git membuat file .git (bukan folder) yang berisi path ke repository induk. Struktur ini memastikan bahwa history, object database, dan refs tetap terpusat, sementara working tree terpisah.
Contoh struktur folder setelah membuat worktree:
~/projects/ my-app/ (repository utama, branch main) my-app-fix/ (worktree, branch hotfix/login) my-app-feature/ (worktree, branch feature/search)Dengan struktur ini, kamu bisa membuka tiga window editor sekaligus dan mengerjakan tiga branch berbeda tanpa konflik working directory.
Sebelum membuat worktree baru, cek dulu worktree yang sudah ada dengan perintah:
git worktree listOutput akan menampilkan path worktree, commit hash terakhir, dan branch yang aktif. Secara default, repository utama kamu sudah terdaftar sebagai worktree pertama. Jika belum ada worktree tambahan, output hanya menampilkan satu baris yaitu repository utama.
Misalnya kamu sedang di branch main dan ingin mengerjakan fitur search di branch tersendiri. Gunakan perintah berikut dari root repository utama:
git worktree add ../project-search feature/searchPerintah di atas akan membuat direktori project-search di folder parent, lalu checkout branch feature/search. Jika branch belum ada di remote atau lokal, tambahkan flag -b untuk membuat branch baru sekaligus:
git worktree add ../project-search -b feature/searchSetelah itu, kamu bisa langsung masuk ke direktori tersebut dan bekerja seperti biasa:
cd ../project-search npm install npm run devPerlu diingat, nama folder worktree bebas kamu tentukan. Gunakan nama yang deskriptif agar tidak bingung saat membuka banyak worktree sekaligus.
Setelah selesai mengerjakan fitur dan branch-nya sudah di-merge ke main, hapus worktree agar tidak memenuhi disk. Caranya adalah menghapus direktori worktree terlebih dahulu, lalu bersihkan referensi Git agar tidak ada metadata yang tersisa:
rm -rf ../project-search git worktree prunePerintah git worktree prune akan menghapus metadata worktree yang sudah tidak ada di filesystem. Untuk memastikan worktree sudah benar-benar terhapus, jalankan git worktree list lagi dan pastikan worktree tersebut tidak muncul di daftar.
Bayangkan kamu sedang mengerjakan refactor besar di worktree ../project-refactor (branch feature/refactor), lalu ada bug kritis di production yang mengharuskan perbaikan segera. Berikut workflow lengkap yang bisa kamu terapkan:
Buat worktree baru untuk hotfix: git worktree add ../project-hotfix main
Masuk ke direktori hotfix: cd ../project-hotfix
Buat branch hotfix: git checkout -b hotfix/critical-bug
Fix bug, commit, dan push seperti biasa
Buat pull request dan merge ke main setelah review
Hapus worktree hotfix dan jalankan prune
Kembali ke worktree refactor tanpa perlu stash atau pop stash
Workflow ini menghemat waktu dan mental overhead karena kamu tidak perlu memikirkan stash stack yang terus bertambah. Selain itu, tidak ada risiko konflik merge yang sering terjadi saat unstash di branch yang sudah berubah signifikan.
Banyak developer yang bingung memilih antara worktree, clone baru, atau stash. Berikut perbandingan singkat untuk membantu keputusan:
| Metode | Keunggulan | Kekurangan |
|---|---|---|
| Git Worktree | Hemat disk, share object DB, paralel | Tidak bisa checkout branch sama di dua worktree |
| Git Clone | Isolasi penuh, bisa di mesin lain | Boros disk, lambat untuk repo besar |
| Git Stash | Cepat, tidak perlu direktori baru | Stash list bisa berantakan, risiko konflik |
Untuk workflow lokal yang sering berpindah branch, worktree adalah pilihan paling seimbang antara kecepatan dan efisiensi storage.
Meskipun powerful, Git Worktree memiliki beberapa batasan yang perlu diperhatikan agar pengalaman development tetap mulus:
Kamu tidak bisa checkout branch yang sama di dua worktree sekaligus. Git akan menolak dengan pesan error.
Untuk repository dengan submodule, pastikan submodule diinisialisasi di setiap worktree dengan git submodule update --init.
IDE seperti VS Code terkadang cache path lama; restart workspace atau hapus cache jika file tidak terdeteksi.
Gunakan relative path saat membuat worktree agar tetap portabel antar mesin dan antar developer di tim yang sama.
Worktree tidak otomatis ter-update saat remote berubah. Kamu tetap perlu git fetch di repository utama.
Pro tip: tambahkan direktori worktree ke
.gitignorerepository utama supaya tidak muncul digit statusdan tidak tertular formatter atau linter.
Git Worktree adalah fitur yang sering terabaikan padahal sangat berguna untuk workflow development yang kompleks. Dengan worktree, kamu bisa mengelola multiple branch secara paralel tanpa stash headache atau duplikasi repository. Fitur ini sangat direkomendasikan untuk developer yang sering mengerjakan hotfix sambil mengembangkan fitur besar di branch berbeda.
Untuk dokumentasi resmi, kunjungi Git Worktree Documentation. Jika ingin mempelajari lebih dalam tentang branching strategy dan workflow tim, baca juga panduan Comparing Workflows dari Atlassian.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu