GIT VERSION-CONTROL DEVELOPER-PRODUCTIVITY WORKFLOW BEST-PRACTICES CLI-TOOLS SOFTWARE-DEVELOPMENT DEVOPS COLLABORATION

Menggunakan Git Worktree: Solusi Fleksibel untuk Workflow Pengembangan Multi-Tugas

⏱️ 5 menit baca
👨‍💻

Menggunakan Git Worktree: Solusi Fleksibel untuk Workflow Pengembangan Multi-Tugas

1. Pendahuluan

Sebagai seorang developer, kita sering dihadapkan pada situasi di mana kita harus beralih antar tugas dengan cepat. Mungkin Anda sedang asyik mengerjakan fitur baru, lalu tiba-tiba muncul bug kritis di produksi yang harus segera diperbaiki. Atau, Anda perlu membandingkan dua implementasi fitur yang berbeda secara langsung.

Apa yang biasanya Anda lakukan? ❌ git stash perubahan Anda saat ini. ❌ git checkout ke branch target. ❌ Kerjakan hotfix atau lihat fitur lain. ❌ git checkout kembali ke branch awal. ❌ git stash pop untuk mengembalikan perubahan. ❌ Menunggu build ulang proyek Anda.

Proses ini, meskipun fungsional, seringkali memakan waktu, mengganggu alur kerja (context switching), dan terkadang berisiko jika ada konflik saat stash pop. Belum lagi jika Anda lupa stash atau ada masalah dengan perubahan yang di-stash.

Untungnya, Git memiliki fitur yang sering diabaikan namun sangat powerful untuk mengatasi masalah ini: Git Worktree. Artikel ini akan membawa Anda menyelami Git Worktree, bagaimana ia bekerja, manfaatnya, dan bagaimana mengintegrasikannya ke dalam workflow pengembangan Anda untuk produktivitas yang lebih baik.

2. Apa Itu Git Worktree?

📌 Konsep Dasar: Secara sederhana, git worktree memungkinkan Anda memiliki beberapa direktori kerja (working tree) yang terkait dengan satu repositori Git yang sama, di mana setiap direktori kerja bisa berada di branch yang berbeda.

Bayangkan Anda memiliki sebuah repositori proyek. Biasanya, Anda hanya memiliki satu salinan direktori proyek tersebut di mana Anda melakukan semua pekerjaan Anda. Dengan Git Worktree, Anda bisa memiliki dua, tiga, atau bahkan lebih salinan direktori proyek tersebut, yang masing-masing “hidup” secara independen dan menunjuk ke branch yang berbeda.

💡 Analogi: Anggap saja repositori Git Anda adalah sebuah perpustakaan besar. Biasanya, Anda hanya bisa meminjam satu buku (satu branch) pada satu waktu dan membacanya di satu meja (satu direktori kerja). Jika Anda ingin membaca buku lain, Anda harus mengembalikan buku pertama, lalu meminjam buku kedua, dan membawanya ke meja yang sama.

Dengan Git Worktree, perpustakaan tersebut memberi Anda kemampuan untuk:

  1. Meminjam beberapa buku sekaligus.
  2. Membaca setiap buku di meja yang berbeda (direktori kerja yang terpisah).
  3. Setiap meja adalah lingkungan kerja yang independen. Anda bisa menulis catatan di buku di satu meja, sementara buku di meja lain tetap bersih.

Ini berarti Anda bisa mengerjakan fitur A di direktori project-feature-a, sementara fitur B di project-feature-b, dan hotfix di project-hotfix, semuanya secara bersamaan, tanpa perlu stash atau checkout berulang kali.

Setiap worktree memiliki HEAD dan index (staging area) sendiri, tetapi berbagi objek repositori (commit, blob, tree) yang sama. Ini membuat worktree sangat ringan dan efisien dari segi penggunaan disk.

3. Manfaat Git Worktree untuk Developer

Menggunakan Git Worktree dapat meningkatkan efisiensi dan fleksibilitas workflow Anda secara signifikan:

3.1. ✅ Context Switching Tanpa Stashing atau Rebuilding

Ini adalah manfaat paling jelas. Saat ada interupsi mendadak, Anda tidak perlu lagi menyimpan perubahan sementara (stash) dan beralih branch. Cukup pindah ke direktori worktree lain yang sudah disiapkan untuk tugas tersebut. Proyek Anda di worktree baru sudah dalam kondisi siap jalan, tidak perlu rebuild dari awal.

# Skenario: Sedang di worktree 'feature-a', lalu ada hotfix
cd ~/projects/my-app/feature-a # Anda sedang bekerja di sini
# ... ada perubahan lokal yang belum di-commit ...

# Pindah ke worktree hotfix
cd ~/projects/my-app/hotfix
git pull origin main # Pastikan branch hotfix terbaru
# ... kerjakan hotfix ...
git commit -am "Fix: Urgent bug"
git push origin hotfix

# Kembali ke worktree feature-a, perubahan lokal tetap aman
cd ~/projects/my-app/feature-a
# Lanjutkan pekerjaan tanpa gangguan

3.2. ✅ Mengerjakan Banyak Fitur Sekaligus

Apakah Anda seorang multi-tasker atau sering harus mengerjakan beberapa fitur yang berbeda dalam satu sprint? Git Worktree adalah jawabannya. Anda bisa memiliki worktree terpisah untuk setiap fitur atau bahkan untuk setiap eksperimen yang Anda jalankan.

# Worktree untuk Fitur Login
~/projects/my-app/feature-login

# Worktree untuk Fitur Notifikasi
~/projects/my-app/feature-notifications

# Worktree untuk Eksperimen Desain A/B
~/projects/my-app/ab-test-design-v2

Setiap worktree akan memiliki lingkungan pengembangan yang terisolasi, termasuk dependensi node_modules atau cache build yang berbeda jika diperlukan, tergantung konfigurasi proyek Anda.

3.3. ✅ Hotfix Cepat di Tengah Pengembangan

Ini adalah skenario klasik. Anda sedang mengerjakan branch feature/X yang kompleks. Tiba-tiba, ada laporan bug di branch main atau release yang memerlukan perbaikan segera. Daripada stash dan checkout yang berisiko, Anda bisa:

  1. Buat worktree baru khusus untuk hotfix.
  2. Beralih ke worktree tersebut.
  3. Perbaiki bug dan deploy.
  4. Hapus worktree hotfix setelah selesai.
  5. Kembali ke worktree feature/X Anda yang tidak terganggu sama sekali.

3.4. ✅ Menguji Berbagai Versi/Branch Secara Paralel

Jika Anda perlu menguji perilaku aplikasi di berbagai versi Git (misalnya, versi lama main dan versi staging terbaru) atau membandingkan dua implementasi fitur yang berbeda secara visual, Git Worktree sangat membantu. Anda bisa menjalankan aplikasi dari worktree yang berbeda di port yang berbeda (misalnya, localhost:3000 dan localhost:3001) dan melihat perbedaannya secara langsung.

# Di worktree utama (misal: main branch)
npm run dev -- --port 3000

# Di worktree baru (misal: feature-branch)
cd ../my-app-feature
npm run dev -- --port 3001

Ini sangat berguna untuk QA, code review, atau bahkan saat Anda sedang mendesain ulang bagian aplikasi.

4. Cara Menggunakan Git Worktree

Menggunakan Git Worktree cukup mudah dengan beberapa perintah dasar.

4.1. 🎯 Menambahkan Worktree Baru

Untuk membuat worktree baru, Anda perlu menentukan jalur (path) dan branch yang akan digunakan.

# Pastikan Anda berada di direktori root repositori utama