Pernahkah Anda mengalami situasi seperti ini? Anda sedang mengikis atau mengembangkan fitur baru yang rumit ketika mendadak menerima Bug darurat yang harus segera diperbaiki.
Demi berpindah cabang (branch), Anda terpaksa menjalankan git stash untuk menyembunyikan kode yang chưa selesai. Setelah memperbaiki Bug dan kembali lagi, Anda harus berhati-hati menjalankan git stash pop, yang terkadang memicu mimpi buruk konflik kode (conflict).
Sebenarnya Git sudah sejak lama menyediakan alat yang sangat tangguh untuk mengatasi titik masalah ini, yaitu Git Worktree.
Katakan selamat tinggal pada pergantian cabang dan Stash yang kacau, mulailah pengembangan multi-thread dengan Worktree
Artikel ini akan mengajak Anda memahami mekanisme inti serta penggunaan praktisnya dalam dunia nyata.
Apa Perbedaan antara Git Worktree dan Git Branch?
Untuk memahami Git Worktree, pertama-tama mari kita perjelas perbedaannya dengan Git Branch.
Kita bisa mengumpamakan kontrol versi seperti sedang membaca buku fisik:
Commitadalah edisi/versi dari bukuBranchadalah pembatas buku yang diselipkan pada halaman tertentuWorktreeadalah meja kerja tempat Anda membentangkan buku
Dalam metode tradisional, kita hanya memiliki satu meja kerja. Setiap kali ingin mengganti pembatas buku, kita harus membereskan semua kertas yang sedang diubah di atas meja atau menyembunyikannya di dalam laci (yaitu git stash).
Sementara itu, Git Worktree memungkinkan Anda memiliki beberapa meja kerja mandiri secara bersamaan.
| Item Perbandingan | Git Branch | Git Worktree |
|---|---|---|
| Konsep Workspace | Berbagi satu direktori kerja fisik | Memiliki beberapa direktori kerja fisik mandiri |
| Biaya Pergantian | Memerlukan commit, stash, atau menyimpan perubahan | Tanpa stash, cukup berpindah direktori saja |
| Isolasi & Keamanan | Berkas belum dicommit dapat memicu konflik atau sisa berkas | Direktori terisolasi penuh, perubahan tidak saling mengganggu |
| Riwayat Aktivitas | Berbagi riwayat Commit Git dan Branch | Berbagi riwayat Commit Git dan Branch |
Branch aktif, Staging Area, dan perubahan belum dicommit pada setiap Worktree bersifat mandiri sepenuhnya, namun mereka berbagi seluruh riwayat Commit dan catatan Branch.
Branch adalah pembatas buku versi, sedangkan Worktree adalah meja kerja fisik
Dengan demikian, ketika Anda perlu berpindah tugas, Anda cukup membuka folder direktori lain tanpa mengganggu status pengembangan yang sedang berjalan sedikit pun.
Bagaimana Cara Memulai Menggunakan Git Worktree?
Saat menerapkan Git Worktree pada proyek nyata, perencanaan direktori yang baik akan membuat pengembangan berjalan lebih lancar.
Disarankan untuk menjaga direktori proyek hasil git clone awal sebagai markas main yang bersih, dan menempatkan direktori Worktree yang baru dibuat di luar proyek utama (misalnya ../my-app-worktrees), untuk menghindari kesalahan pemindaian direktori secara rekursif oleh alat pengembang.
Alur perintah yang sering digunakan adalah sebagai berikut:
| Alur | Perintah |
|---|---|
| 1. Membuat Worktree baru sekaligus membuat cabang baru | git worktree add ../my-app-worktrees/feature-login -b feature-login |
| 2. Melihat seluruh daftar Worktree saat ini | git worktree list |
Git Worktree sangat cocok digunakan untuk mengelola tugas pengembangan AI Agent.
Anda dapat memberikan direktori Worktree terpisah kepada AI Agent agar ia bebas mengubah dan menguji kode, sementara pengembang manusia melakukan peninjauan kode (Review) dan pengujian di Worktree lainnya.
Berikan Worktree mandiri kepada AI Agent agar pengembangan AI dan peninjauan manusia dapat berjalan secara paralel
Keduanya beroperasi di direktori fisik masing-masing, terjamin aman dan jelas.
Bagaimana Cara Menggabungkan dan Membersihkan Secara Aman Setelah Selesai Pengembangan?
Setelah Anda menyelesaikan pengembangan di Worktree mandiri, bagaimana cara menggabungkan hasil kerja dan melakukan pembersihan?
Ingatlah satu konsep penting: Direktori Worktree itu sendiri tidak perlu digabungkan, yang benar-benar perlu digabungkan adalah Branch.
Anda hanya perlu kembali ke direktori meja kerja main dan menjalankan perintah git merge terhadap cabang fitur yang bersangkutan untuk menyelesaikan integrasi.
Saat pembersihan, ikuti alur standar dua langkah berikut:
| Langkah | Perintah |
|---|---|
| 1. Menghapus direktori fisik Worktree | git worktree remove ../my-app-worktrees/feature-login |
| 2. Menghapus cabang fitur yang telah selesai | git branch -d feature-login |
Hapus direktori Worktree terlebih dahulu, baru kemudian hapus Branch
Pastikan untuk selalu menggunakan perintah git worktree remove untuk melakukan pembersihan, bukan menghapus folder secara manual dari file manager.
Apa Saja Jebakan Umum Saat Menggunakan Git Worktree?
Meskipun Git Worktree sangat praktis, ada beberapa hal yang perlu diwaspadai agar tidak terjadi kesalahan.
Jebakan 1: Perubahan yang belum dicommit akan hilang
Meskipun menghapus Worktree tidak menghapus Branch itu sendiri, jika Anda masih memiliki perubahan yang belum dicommit di direktori tersebut, menghapus direktori Worktree secara paksa akan membuat perubahan itu hilang selamanya.
Jebakan 2: Konflik pendudukan cabang
Mekanisme perlindungan Git tidak mengizinkan Branch yang sama di-Checkout secara bersamaan di dua Worktree yang berbeda. Jika Anda mencoba beralih ke cabang yang sedang digunakan di Worktree kedua, Git akan langsung memblokir dan menampilkan pesan kesalahan.
Menghapus Worktree secara paksa akan menghilangkan perubahan yang belum di-Commit
Dengan menguasai karakteristik dan prinsip ini, Anda dapat terhindar dari jebakan tersebut.
Kesimpulan
Melalui Git Worktree, kita dapat sepenuhnya meninggalkan pergantian cabang yang rumit dan proses git stash, serta mewujudkan pengembangan multi-thread sejati.
Lain kali ketika menghadapi Bug darurat, mengerjakan banyak fitur bersamaan, atau memberikan tugas pengkodean kepada AI Agent, cobalah membuka meja kerja yang baru!