Tutorial Lengkap Git Worktree: Bekerja di Branch Berbeda Tanpa Stash
AW
Axel W

Dipublikasikan 4 Juni 2026

Tutorial Lengkap Git Worktree: Bekerja di Branch Berbeda Tanpa Stash

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.

Apa Itu Git Worktree?

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

Persiapan dan Prasyarat

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 --version

Jika 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.

Memahami Struktur Worktree

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.

Langkah 1: Melihat Worktree yang Ada

Sebelum membuat worktree baru, cek dulu worktree yang sudah ada dengan perintah:

git worktree list

Output 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.

Langkah 2: Membuat Worktree Baru

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/search

Perintah 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/search

Setelah itu, kamu bisa langsung masuk ke direktori tersebut dan bekerja seperti biasa:

cd ../project-search npm install npm run dev

Perlu diingat, nama folder worktree bebas kamu tentukan. Gunakan nama yang deskriptif agar tidak bingung saat membuka banyak worktree sekaligus.

Langkah 3: Menghapus Worktree

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 prune

Perintah 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.

Workflow Praktis: Hotfix Tanpa Stash

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:

  1. Buat worktree baru untuk hotfix: git worktree add ../project-hotfix main

  2. Masuk ke direktori hotfix: cd ../project-hotfix

  3. Buat branch hotfix: git checkout -b hotfix/critical-bug

  4. Fix bug, commit, dan push seperti biasa

  5. Buat pull request dan merge ke main setelah review

  6. Hapus worktree hotfix dan jalankan prune

  7. 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.

Perbandingan: Worktree vs Clone vs Stash

Banyak developer yang bingung memilih antara worktree, clone baru, atau stash. Berikut perbandingan singkat untuk membantu keputusan:

MetodeKeunggulanKekurangan
Git WorktreeHemat disk, share object DB, paralelTidak bisa checkout branch sama di dua worktree
Git CloneIsolasi penuh, bisa di mesin lainBoros disk, lambat untuk repo besar
Git StashCepat, tidak perlu direktori baruStash list bisa berantakan, risiko konflik

Untuk workflow lokal yang sering berpindah branch, worktree adalah pilihan paling seimbang antara kecepatan dan efisiensi storage.

Tips dan Batasan Penting

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 .gitignore repository utama supaya tidak muncul di git status dan tidak tertular formatter atau linter.


Kesimpulan

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.