Berpindah branch dengan git switch biasanya cukup. Masalah muncul ketika pekerjaan yang sedang berjalan belum selesai, tetapi tiba-tiba ada bug yang harus segera diperbaiki. Menyimpan perubahan sementara, berpindah branch, lalu mengembalikannya lagi memang bisa dilakukan, tetapi alurnya cepat menjadi merepotkan.
Di situ Git worktree berguna. Fitur bawaan Git ini memungkinkan satu repository memiliki beberapa working tree—folder kerja yang masing-masing dapat berada di branch berbeda. Dengan begitu, branch fitur bisa tetap terbuka di satu folder, sementara branch hotfix dikerjakan di folder lain. ([git-scm.com](https://git-scm.com/docs/git-worktree?utm_source=openai))
Apa itu Git worktree?
Bayangkan satu repository sebagai proyek utama, lalu Anda membuat beberapa meja kerja untuk proyek yang sama. Setiap meja memiliki folder dan branch sendiri, tetapi metadata repository penting tetap dikelola bersama.
Repository utama biasanya disebut main worktree. Folder tambahan yang dibuat dengan perintah git worktree add disebut linked worktree. Masing-masing worktree mempunyai posisi HEAD dan index sendiri, sehingga perubahan di satu folder tidak harus mengganggu folder lainnya. ([git-scm.com](https://git-scm.com/docs/git-worktree?utm_source=openai))
Ini berbeda dari sekadar menyalin folder repository secara manual. Salinan biasa bisa memiliki metadata Git yang terpisah dan berisiko membingungkan. Worktree secara resmi terhubung ke repository asal dan dapat dikelola dengan perintah Git.
Kapan fitur ini terasa paling membantu?
- Memperbaiki bug produksi: pekerjaan fitur yang belum selesai tetap berada di foldernya, sementara hotfix bisa dibuat di folder terpisah.
- Menguji beberapa versi: Anda dapat menjalankan branch stabil dan branch eksperimen secara berdampingan.
- Meninjau pull request: satu folder dipakai untuk kode utama, folder lain untuk checkout branch yang sedang ditinjau.
- Mengurangi stash: perubahan yang belum selesai tidak perlu terus-menerus disimpan dengan
git stashhanya untuk berpindah konteks.
Manfaat terbesarnya bukan sekadar menghemat waktu mengetik perintah. Worktree mengurangi risiko Anda lupa mengembalikan perubahan, menjalankan pengujian pada branch yang salah, atau tanpa sengaja mencampur pekerjaan hotfix dengan fitur baru.
Membuat worktree pertama
Misalnya Anda sedang berada di repository toko-online dan ingin membuat folder hotfix di sebelah folder utama. Jalankan:
git worktree add ../toko-online-hotfix hotfixPerintah tersebut membuat folder baru di ../toko-online-hotfix dan checkout branch hotfix di dalamnya. Branch tersebut harus sudah tersedia secara lokal atau dapat dikenali Git dari referensi remote.
Untuk membuat branch baru sekaligus worktree-nya, gunakan opsi -b:
git worktree add -b perbaiki-checkout ../toko-online-checkout mainArtinya, Git membuat branch perbaiki-checkout berdasarkan main, lalu menempatkannya di folder baru.
Setelah itu, Anda bisa membuka dua terminal atau dua jendela editor:
toko-onlineuntuk pekerjaan fitur yang belum selesai.toko-online-hotfixuntuk perbaikan mendesak.
Melihat dan menghapus worktree
Untuk melihat semua worktree yang terhubung ke repository, gunakan:
git worktree listOutput-nya akan membantu Anda mengetahui folder mana yang sedang memakai branch tertentu. Ini penting karena Git biasanya mencegah branch yang sama dipakai aktif di beberapa worktree pada waktu bersamaan. ([git-scm.com](https://git-scm.com/docs/git-worktree?utm_source=openai))
Jika pekerjaan selesai, hapus worktree dengan:
git worktree remove ../toko-online-hotfixPerintah ini menghapus linked worktree beserta folder kerjanya, tetapi tidak otomatis menghapus branch. Jika branch memang sudah tidak dibutuhkan, Anda dapat menghapusnya secara terpisah dengan perintah seperti git branch -d nama-branch.
Jika folder worktree sudah terhapus secara manual atau dipindahkan tanpa memakai perintah Git, jalankan:
git worktree pruneSebaiknya gunakan git worktree remove terlebih dahulu. prune lebih cocok untuk membersihkan metadata yang tertinggal.
Hal yang perlu diperhatikan
Jangan menjalankan dua pekerjaan pada branch yang sama
Satu branch sebaiknya hanya aktif di satu worktree. Jika Anda memaksa memakai branch yang sama, risiko konflik dan kebingungan meningkat. Gunakan branch berbeda untuk setiap konteks pekerjaan.
Perhatikan dependency dan file hasil build
Setiap worktree memiliki folder kerja sendiri. Pada proyek Node.js, PHP, Python, atau Java, Anda mungkin perlu memasang dependency atau menjalankan proses build di masing-masing folder. Folder seperti node_modules, virtual environment, atau hasil kompilasi tidak otomatis dibagi dengan cara yang selalu sesuai.
Hati-hati dengan konfigurasi lokal
File konfigurasi yang tidak dilacak Git, seperti .env, bisa tidak tersedia di worktree baru. Siapkan cara yang aman untuk membuat konfigurasi lokal tanpa memasukkan rahasia ke repository. Jangan asal menyalin kredensial produksi ke folder eksperimen.
Jangan menghapus folder sembarangan saat masih dipakai
Git menyimpan metadata untuk mengetahui hubungan antara repository utama dan linked worktree. Jika worktree dipindah atau dihapus secara manual, statusnya bisa perlu diperbaiki dengan git worktree repair atau dibersihkan menggunakan git worktree prune. ([git-scm.com](https://git-scm.com/docs/git-worktree?utm_source=openai))
Pola kerja sederhana yang bisa dicoba
- Biarkan repository utama untuk pekerjaan fitur harian.
- Buat worktree kedua khusus untuk hotfix atau review.
- Jalankan pengujian di folder yang sesuai dengan branch aktif.
- Setelah branch digabung atau pekerjaan selesai, hapus worktree dengan
git worktree remove. - Periksa hasilnya dengan
git worktree listagar tidak ada folder kerja yang terlupakan.
Apa artinya bagi kita?
Git worktree bukan fitur yang wajib dipakai semua orang. Untuk proyek kecil dengan satu alur kerja sederhana, berpindah branch biasa mungkin sudah cukup. Namun, jika Anda sering menangani beberapa konteks sekaligus—misalnya fitur baru, perbaikan bug, dan review kode—worktree bisa membuat proses terasa jauh lebih tenang.
Kuncinya adalah memperlakukan setiap worktree sebagai ruang kerja yang jelas: satu folder untuk satu tujuan. Dengan kebiasaan itu, Anda tidak perlu terus-menerus menyimpan perubahan sementara hanya karena ada pekerjaan lain yang harus didahulukan.
Sumber & bacaan lebih lanjut
- Git Worktree Documentation
- Git User Manual: Working with Multiple Worktrees
- Git Checkout Documentation
– Rio Yotto @rioyotto
