Featured image of post Mengapa harus git stash setiap kali ganti cabang? Apa itu Git Worktree? Perbedaan antara Git Worktree dan Git Branch? Cara menggunakan Git Worktree untuk membuat alur kerja multi-thread yang efisien

Mengapa harus git stash setiap kali ganti cabang? Apa itu Git Worktree? Perbedaan antara Git Worktree dan Git Branch? Cara menggunakan Git Worktree untuk membuat alur kerja multi-thread yang efisien

Sedang mengembangkan fitur baru tapi tiba-tiba ada Bug darurat? Berhentilah menyembunyikan kode dengan git stash! Memperkenalkan konsep inti Git Worktree, perbedaannya dengan Git Branch, perencanaan direktori praktis, dan praktik terbaik kolaborasi AI Agent.

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:

  • Commit adalah edisi/versi dari buku
  • Branch adalah pembatas buku yang diselipkan pada halaman tertentu
  • Worktree adalah 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!

Reference

All rights reserved,未經允許不得隨意轉載
Dibangun dengan Hugo
Tema Stack dirancang oleh Jimmy