Home / Artikel / Software
Software

Tidak Perlu Bolak-Balik Checkout: Cara Memakai Git Worktree untuk Kerja Paralel

Git worktree memungkinkan satu repository memiliki beberapa folder kerja untuk branch yang berbeda. Hasilnya, Anda bisa memperbaiki bug, menguji fitur, dan meninjau pull request tanpa terus-menerus menyimpan perubahan s…

Tidak Perlu Bolak-Balik Checkout: Cara Memakai Git Worktree untuk Kerja Paralel

Berpindah branch dengan git checkout atau git switch biasanya cukup untuk pekerjaan sehari-hari. Namun, alurnya mulai terasa merepotkan ketika Anda sedang mengerjakan fitur yang belum selesai, lalu harus segera memperbaiki bug di branch lain. Perubahan lokal perlu disimpan, dependency mungkin berubah, dan konteks kerja mudah tercampur.

Git memiliki fitur bernama worktree untuk situasi seperti ini. Sederhananya, satu repository dapat memiliki beberapa folder kerja yang berjalan bersamaan. Setiap folder bisa menggunakan branch berbeda, tetapi tetap berbagi riwayat Git yang sama.

Apa itu Git worktree?

Menurut dokumentasi resmi Git, worktree adalah working directory tambahan yang terhubung ke repository yang sama. Repository utama tetap memiliki satu folder kerja, lalu Anda dapat menambahkan linked worktree untuk branch lain.

Bayangkan repository sebagai satu perpustakaan besar. Branch adalah jalur versi buku, sementara worktree adalah beberapa meja baca. Anda bisa membuka buku dari jalur yang berbeda di setiap meja tanpa harus menutup dan mengganti buku di meja yang sama.

Yang dibagikan adalah riwayat repository, commit, branch, dan remote. Sementara itu, file kerja, staging area, serta perubahan yang belum di-commit berada secara terpisah di masing-masing worktree.

Kapan worktree lebih berguna daripada stash?

git stash tetap berguna untuk menyimpan perubahan sementara. Namun, stash membuat Anda meninggalkan konteks kerja sebelum berpindah branch. Setelah kembali, Anda perlu menerapkan lagi perubahan tersebut dan mungkin menghadapi konflik.

Worktree lebih cocok jika Anda sering bekerja pada dua konteks dalam waktu bersamaan, misalnya:

  • Fitur utama belum selesai, tetapi ada bug produksi yang harus segera diperbaiki.
  • Anda ingin meninjau pull request tanpa mengganggu pekerjaan lokal.
  • Anda perlu membandingkan dua versi aplikasi secara langsung.
  • Proses pengujian atau build berjalan lama, sementara Anda ingin mengerjakan tugas lain.
  • Anda ingin membuka branch dokumentasi dan branch kode dalam dua jendela editor.

Ini bukan berarti worktree selalu lebih baik. Setiap folder tambahan dapat membutuhkan konfigurasi, dependency, dan ruang penyimpanan sendiri. Gunakan ketika manfaat menjaga beberapa konteks tetap terbuka lebih besar daripada biaya pengelolaannya.

Membuat worktree pertama

Misalkan Anda sedang berada di folder repository utama dan ingin membuat worktree untuk perbaikan bug:

git worktree add ../project-hotfix bugfix/payment-validation

Perintah tersebut membuat folder project-hotfix di satu tingkat di atas repository saat ini, lalu memeriksa branch bugfix/payment-validation di dalamnya.

Jika branch tersebut belum ada, Anda dapat meminta Git membuat branch baru sekaligus:

git worktree add -b feature/report ../project-report main

Contoh ini membuat branch baru bernama feature/report berdasarkan main, kemudian menempatkannya di folder project-report.

Setelah itu, struktur folder Anda kira-kira menjadi seperti ini:

projects/├── project/           # worktree utama, misalnya branch main├── project-hotfix/    # branch bugfix/payment-validation└── project-report/    # branch feature/report

Anda dapat membuka setiap folder di editor secara terpisah. Di VS Code, setiap worktree dapat muncul sebagai repository berbeda pada tampilan Source Control, sehingga beberapa jendela kerja bisa dibuka tanpa terus mengganti branch.

Perintah yang perlu diingat

Untuk melihat semua worktree yang terhubung ke repository:

git worktree list

Output-nya akan menampilkan lokasi folder, commit yang sedang dipakai, dan branch yang aktif. Perintah ini membantu ketika Anda lupa branch mana yang berada di folder tertentu.

Jika pekerjaan sudah selesai, hapus worktree dengan:

git worktree remove ../project-hotfix

Jalankan perintah tersebut setelah memastikan tidak ada perubahan lokal yang masih dibutuhkan. Jika folder worktree terhapus secara manual, metadata terkait bisa tertinggal. Untuk membersihkan data worktree yang sudah tidak ada, gunakan:

git worktree prune

Git juga mencegah satu branch lokal diperiksa di lebih dari satu worktree pada waktu yang sama. Aturan ini penting karena dua folder yang menulis branch identik dapat membuat status dan riwayat kerja menjadi membingungkan.

Hal yang sering mengejutkan pengguna baru

Dependency tidak otomatis selalu siap

Worktree memisahkan folder kerja, tetapi file yang diabaikan oleh .gitignore, seperti node_modules, file .env, atau hasil build, biasanya tidak ikut tersalin. Akibatnya, Anda mungkin perlu menjalankan kembali npm install, menyalin konfigurasi lokal, atau menyiapkan environment variable.

Ini sebenarnya perilaku yang aman: rahasia dan konfigurasi mesin lokal tidak seharusnya muncul otomatis di setiap folder. Jika menggunakan VS Code, terdapat pengaturan untuk menentukan file yang aman disalin ke worktree baru, tetapi gunakan dengan hati-hati—terutama untuk file yang berisi token atau kredensial.

Worktree bukan sandbox keamanan

Worktree hanya memisahkan file dan branch. Ia bukan batas keamanan yang mencegah kode mengakses file lain di komputer, jaringan, atau layanan eksternal. Jika Anda menjalankan kode yang belum dipercaya, tetap gunakan langkah pengamanan yang sesuai, seperti container, akun dengan hak terbatas, atau lingkungan pengujian terpisah.

Jangan membuat terlalu banyak worktree

Beberapa worktree memang praktis, tetapi terlalu banyak folder dapat membuat dependency, cache, dan hasil build menghabiskan ruang. Gunakan penamaan folder yang jelas, lalu hapus worktree yang sudah tidak aktif.

Workflow sederhana yang bisa dicoba

  1. Biarkan repository utama dipakai untuk pekerjaan utama atau branch main.
  2. Buat worktree khusus untuk hotfix yang harus segera dikerjakan.
  3. Buka worktree tersebut di jendela editor terpisah.
  4. Commit dan push perubahan seperti biasa dari folder itu.
  5. Setelah branch digabung dan tidak diperlukan lagi, hapus worktree dengan git worktree remove.

Apa artinya bagi kita?

Git worktree bukan fitur yang wajib dipakai semua orang. Namun, bagi developer yang sering menangani beberapa tugas paralel, fitur ini dapat mengurangi gangguan kecil yang berulang: stash, checkout, menunggu build selesai, lalu mengembalikan konteks kerja.

Mulailah dari satu kasus yang jelas, misalnya membuat folder hotfix di samping repository utama. Setelah terbiasa dengan git worktree list dan git worktree remove, Anda dapat menilai sendiri apakah model kerja beberapa folder ini membuat proses lebih rapi atau justru menambah beban. Dokumentasi resmi Git dan panduan worktree di VS Code dapat digunakan untuk menyesuaikan workflow dengan kebutuhan proyek.

Sumber & bacaan lebih lanjut

– Rio Yotto @rioyotto