Tutorial Git Worktree: Kerja di Beberapa Branch Tanpa Berpindah
Tutorial praktis Git worktree yang menunjukkan cara bekerja pada beberapa branch sekaligus, mempercepat review, dan menghindari stashing atau pindah konteks.
Anda sedang mengerjakan sebuah feature branch ketika rekan tim meminta Anda meninjau pull request mereka. Anda bisa melakukan stash pada perubahan, beralih branch, dan berharap masih ingat posisi terakhir. Atau Anda bisa melakukan commit pekerjaan yang belum selesai demi menghindari hilangnya perubahan. Lalu ada hotfix darurat: produksi down, sementara Anda sedang berada di tengah refactoring yang menyentuh setengah codebase. Setiap perpindahan konteks seperti ini memakan waktu setup 10–15 menit dan memecah fokus Anda.
Git worktree mengatasinya dengan memungkinkan Anda checkout beberapa branch secara bersamaan di direktori terpisah. Alih-alih melakukan stash atau commit pekerjaan yang belum rampung, Anda cukup cd ke direktori lain tempat branch lain sudah di-checkout. Kerjakan hotfix, deploy, lalu cd kembali ke pekerjaan fitur Anda persis seperti sebelumnya.
Dalam tutorial ini, saya akan menunjukkan cara membuat dan mengelola worktree, menghindari jebakan umum, dan mengintegrasikannya ke alur kerja harian Anda. Anda sebaiknya sudah memahami branch Git, commit, dan operasi baris perintah dasar. Jika Anda perlu menyegarkan dasar-dasar Git terlebih dahulu, saya merekomendasikan tutorial Introduction to Git dari DataCamp untuk mencakup hal-hal esensial.
Apa Itu Git Worktree?
Git worktree adalah fitur bawaan yang membuat direktori kerja tambahan yang ditautkan ke repositori yang sama. Direktori kerja utama Anda adalah worktree utama, dan setiap worktree tambahan yang Anda buat mendapatkan direktori sendiri dengan branch-nya sendiri yang di-checkout. Semua worktree ini terhubung ke repositori .git yang sama.
Arsitektur repositori bersama ini berarti commit yang Anda buat di worktree mana pun akan langsung muncul di basis data Git bersama, dapat diakses dari semua worktree lain. File-file itu sendiri tetap independen — mengedit train.py di satu worktree hanya memengaruhi direktori tersebut hingga Anda melakukan commit pada perubahan.
Mengapa tidak hanya menggunakan terminal berbeda?
Anda tidak dapat membuka beberapa terminal di direktori yang sama dan bekerja pada branch berbeda secara bersamaan. Git hanya mengizinkan satu branch di-checkout pada satu waktu per direktori. Ketika Anda menjalankan git checkout feature-b di satu terminal, itu mengubah file untuk setiap terminal yang menunjuk ke direktori tersebut.
Git worktree mengatasinya dengan memberikan setiap branch direktori sendiri. Setiap direktori sepenuhnya independen dengan file, proses yang berjalan, dan artefak build miliknya. Berpindah antar branch menjadi cd ../different-directory alih-alih git checkout different-branch.
Prasyarat Git Worktree
Sebelum menggunakan git worktree, verifikasi pengaturan Anda:
Git 2.5 atau lebih baru: Jalankan git --version untuk memeriksa. Git worktree dirilis pada 2015, jadi sebagian besar instalasi sudah memilikinya
Repositori Git yang sudah ada: Anda memerlukan repositori dengan setidaknya satu branch
Kefamiliaran dengan baris perintah: Semua operasi worktree terjadi di terminal
Git worktree bekerja dengan baik saat perpindahan branch akan mengganggu pekerjaan Anda saat ini:
Code review: Uji perubahan rekan tim tanpa melakukan stash pada pekerjaan fitur Anda
Hotfix darurat: Perbaiki bug produksi sambil menjaga refactoring Anda tetap utuh
Pengembangan paralel: Kerjakan dua fitur independen tanpa terus-menerus berpindah branch
Proses berjalan lama: Jalankan test suite 30 menit dan tetap ngoding di worktree lain
Lewati untuk tugas cepat di bawah 10 menit di mana git checkout lebih sederhana, atau saat Anda fokus pada satu pekerjaan tanpa gangguan yang diharapkan.
Membuat Worktree Pertama Anda
Cara terbaik memahami git worktree adalah membuat satu dan melihatnya langsung. Kita akan menelusuri perintah dasar, mengeksplorasi struktur yang dibuat Git, dan mengamati bagaimana perubahan mengalir antar worktree.
Menyiapkan repositori contoh
Sebelum masuk ke worktree, Anda memerlukan repositori Git untuk dikerjakan. Jika Anda sudah memiliki proyek Python dengan beberapa branch, lanjutkan ke bagian berikutnya. Jika belum, mari cepat menyiapkan pipeline ML sederhana:
mkdir ml-pipeline
cd ml-pipeline
git initDidukung oleh
Buat README dan skrip Python:
echo"# ML Pipeline"> README.md
echo"def load_data():"> train.py
echo" print('Loading training data...')">> train.pyDidukung oleh
gitadd.git commit -m"Initial commit"git branch feature-preprocessingDidukung oleh
Sekarang Anda memiliki repositori dengan dua branch: main (branch saat ini) dan feature-preprocessing.
Pembuatan worktree dasar
Membuat worktree untuk branch yang sudah ada hanya butuh satu perintah. Mari checkout feature-preprocessing di direktori terpisah:
git worktree add../ml-pipeline-preprocessing feature-preprocessingDidukung oleh
Ini membuat direktori baru bernama ml-pipeline-preprocessing satu level di atas lokasi Anda saat ini, melakukan checkout branch feature-preprocessing di sana, dan menautkannya ke repositori yang sudah ada.
Git mengonfirmasi pembuatan:
Preparing worktree (checking out 'feature-preprocessing')
HEAD is now at 0a7f986 Initial commitDidukung oleh
Untuk pekerjaan yang benar-benar baru, buat branch dan worktree sekaligus:
git worktree add -b feature-visualization ../ml-pipeline-vizDidukung oleh
Flag -b membuat branch baru bernama feature-visualization dan melakukan checkout di worktree baru.
Mengeksplorasi struktur worktree
Dengan worktree yang dibuat, kini Anda memiliki beberapa direktori pada filesystem. Untuk melihat semuanya:
/Users/you/projects/ml-pipeline 0a7f986 [main]
/Users/you/projects/ml-pipeline-preprocessing 0a7f986 [feature-preprocessing]Didukung oleh
Baris pertama menunjukkan worktree utama — direktori asli yang berisi folder .git. Baris kedua menunjukkan worktree tertaut. Keduanya menampilkan hash commit saat ini dan branch yang di-checkout.
Setiap direktori worktree berfungsi seperti repositori Git lengkap. Anda dapat menavigasi ke dalamnya, mengedit file, menjalankan git status, dan melakukan commit. Worktree tertaut tidak berisi direktori .git penuh—sebagai gantinya, mereka memiliki file .git yang menunjuk kembali ke repositori utama. Di dalam direktori .git utama, folder worktrees menyimpan metadata tentang setiap worktree tertaut.
Bekerja di dalam worktree
Navigasikan ke worktree feature-preprocessing dan buat sebuah commit:
Uji perubahan dan tinggalkan masukan Anda. Setelah selesai:
cd../ml-pipeline
git worktree remove ../ml-pipeline-reviewDidukung oleh
Pekerjaan asli Anda tetap tidak tersentuh. Tidak perlu stash atau pindah konteks. Untuk strategi lebih lanjut tentang code review yang efektif, lihat panduan praktik terbaik code review dari DataCamp.
Hotfix darurat
Tanpa worktree:
Simpan perubahan refactoring Anda di suatu tempat (stash atau commit WIP)
Checkout branch main
Perbaiki bug
Push ke produksi
Checkout feature branch
Pulihkan perubahan Anda (unstash atau revert commit WIP)
Bangun kembali konteks mental tentang apa yang sedang Anda kerjakan
Dengan worktree:
git worktree add../ml-pipeline-hotfix main
cd../ml-pipeline-hotfixDidukung oleh
Perbaiki dan deploy:
gitadd src/data/validation.py
git commit -m"Fix schema validation for nullable timestamp fields"git push origin main
cd../ml-pipeline
git worktree remove ../ml-pipeline-hotfixDidukung oleh
Anda kembali ke pekerjaan refactoring dalam hitungan detik, dengan semua file persis seperti sebelumnya.
Pengembangan fitur paralel
Anda sedang mengimplementasikan metrik kustom dan data loader baru — dua fitur independen. Siapkan satu worktree untuk masing-masing:
~/projects/
ml-pipeline/ [main] - your usual work
ml-pipeline-metrics/ [feature-custom-metrics]
ml-pipeline-loader/ [feature-streaming-loader]Didukung oleh
Jalankan kedua fitur secara paralel — masing-masing di terminalnya:
# Terminal 1cd ~/projects/ml-pipeline-metrics
python experiments/evaluate_custom_metrics.py
# Terminal 2 cd ~/projects/ml-pipeline-loader
pytest tests/test_data_loader.py -vDidukung oleh
Kedua proses berjalan bersamaan tanpa konflik. Saat sebuah fitur selesai, merge dan hapus worktree-nya:
cd ~/projects/ml-pipeline
git merge feature-custom-metrics
git worktree remove ../ml-pipeline-metricsDidukung oleh
Mengelola dan Membersihkan Worktree
Menampilkan daftar worktree
Untuk melihat semua worktree di sebuah repositori:
/Users/you/projects/ml-pipeline a3f9c81 [main]
/Users/you/projects/ml-pipeline-review b7d4e92 [pr/data-validation]
/Users/you/projects/ml-pipeline-hotfix a3f9c81 [hotfix/schema-bug]Didukung oleh
Setiap baris menunjukkan path direktori, hash commit saat ini, dan branch yang di-checkout. Entri pertama selalu worktree utama Anda (yang berisi folder .git), dan sisanya adalah worktree tertaut.
Untuk scripting atau navigasi cepat, ekstrak hanya path-nya:
Mari kita lihat beberapa cara untuk memaksimalkan penggunaan worktree dan cara menghindari beberapa kesalahan umum.
Organisasi worktree
Lokasi Anda menempatkan worktree itu penting. Kebanyakan developer menempatkannya sebagai direktori saudara dari repositori utama:
~/projects/
ml-pipeline/ # main worktree
ml-pipeline-feature-auth/ # linked worktree
ml-pipeline-hotfix-login/ # linked worktreeDidukung oleh
Struktur ini menjaga semuanya di satu tempat dan membuat path mudah diprediksi. Pola projectname-branchname memberi tahu Anda persis apa isi setiap direktori.
Sebagian developer memilih folder khusus:
~/projects/
ml-pipeline/ # main worktree
ml-pipeline-worktrees/
feature-auth/
hotfix-login/Didukung oleh
Pilih satu pendekatan dan gunakan secara konsisten. Nama deskriptif seperti ml-pipeline-user-authentication membuat direktori mudah dipahami, sementara nama generik seperti ml-pipeline-temp atau ml-pipeline-2 memaksa Anda untuk memeriksa isinya. Perlakukan worktree sebagai sementara—buat untuk tugas tertentu, lalu hapus saat selesai.
Jebakan umum
Branch yang sama di beberapa worktree
Git mencegah checkout branch yang sama di dua worktree:
git worktree add../ml-pipeline-duplicate mainDidukung oleh
fatal: 'main' is already used by worktree at '/Users/you/projects/ml-pipeline'Didukung oleh
Perlindungan ini ada karena Anda bisa membuat commit yang saling bertentangan. Jika Anda memerlukan kode yang sama di dua tempat, buat branch baru.
Worktree terlupa dan ruang disk
Setiap worktree tetap berada di filesystem hingga Anda secara eksplisit menghapusnya. Worktree lama menumpuk; proyek bisa mengumpulkan 15+ worktree terlupa, memakan gigabyte.
Setiap worktree berisi salinan penuh file repositori Anda. Repositori 500MB dengan 5 worktree menghabiskan 2,5GB. Hapus worktree saat selesai:
git worktree list
git worktree remove ../ml-pipeline-old-featureDidukung oleh
Menanam worktree (nesting)
Jangan membuat worktree di dalam direktori worktree lain. Git mengizinkan ini, tetapi akan menciptakan struktur direktori yang membingungkan dan membuat pembersihan rentan kesalahan.
Optimasi alur kerja
Alias shell menghemat waktu jika Anda sering membuat worktree:
aliasgwl='git worktree list'aliasgwa='git worktree add'aliasgwr='git worktree remove'Didukung oleh
Untuk setup yang lebih kompleks, tulis fungsi yang membuat worktree dan mengonfigurasi lingkungan pengembangan Anda dalam satu langkah:
${PWD##*/} mengekstrak nama direktori saat ini. Menjalankan wt feature-logging dari ml-pipeline membuat ml-pipeline-feature-logging, menavigasi ke dalamnya, dan menyiapkan lingkungan virtual Python dengan dependensi.
Sesuaikan ini untuk bahasa Anda: ganti setup Python dengan bundle install untuk Ruby, cargo build untuk Rust, atau npm install untuk Node.js.
Editor atau IDE Anda bekerja dengan worktree tanpa konfigurasi khusus. Setiap worktree hanyalah direktori, jadi bukalah seperti folder proyek lainnya. Sebagian besar editor modern mendukung membuka beberapa root proyek secara bersamaan — Anda bisa membuka tiga worktree dalam satu jendela dan beralih di sidebar.
Worktree Lanjutan: Pengembangan Paralel Dibantu AI
Jika Anda menggunakan asisten coding AI, worktree membuka alur kerja paralel yang kuat. Pendekatan ini semakin populer di kalangan developer dan tim pada 2024–2025.
Buka panel terminal untuk setiap worktree dan jalankan asisten AI Anda:
# Pane 1cd ~/projects/ml-pipeline-logging
claude
# Pane 2cd ~/projects/ml-pipeline-optim
claude
# Pane 3cd ~/projects/ml-pipeline-bugfix
claudeDidukung oleh
Setiap instance AI mengerjakan fitur berbeda tanpa saling mengganggu. Tim melaporkan dapat menyelesaikan pekerjaan dalam hitungan jam yang sebelumnya memakan waktu berhari-hari. Misalnya, incident.io menjalankan 4–5 agen Claude Code secara paralel menggunakan pola ini. Dalam satu kasus, Claude memperkirakan peningkatan UI memakan waktu 2 jam tetapi selesai dalam 10 menit.
Pertimbangan trade-off:
Konsumsi token: Beberapa sesi AI menggunakan lebih banyak kredit API dan mungkin mencapai batas laju
Overhead setup: Setiap worktree memerlukan lingkungan virtual dan dependensi sendiri
Beban kognitif: Mengelola banyak percakapan di berbagai tugas
Ini bekerja dengan baik untuk fitur besar yang independen (masing-masing 30+ menit) di mana pekerjaan tidak menyentuh file yang sama, dan Anda memiliki kuota API yang cukup. Lewati untuk perbaikan bug cepat, fitur yang saling terkait erat, atau ketika mendekati batas laju API.
Kesimpulan
Ingat skenario di awal — rekan tim membutuhkan review PR saat Anda tengah mengerjakan fitur. Kini Anda tahu solusinya: git worktree add ../ml-pipeline-review pr/branch-name, lalu cd untuk mulai meninjau. Pekerjaan fitur Anda tetap tidak tersentuh. Tanpa stash, tanpa commit kode setengah jadi, tanpa beban mental membangun ulang konteks saat kembali. Dua direktori, dua branch, tanpa friksi.
Git worktree tidak menambah kompleksitas pada alur kerja Anda — justru menguranginya. Setiap worktree hanyalah direktori dengan branch yang di-checkout. Namun kesederhanaan itu membuka sesuatu yang kuat: kemampuan untuk berpindah konteks seketika antar tugas tanpa beban kognitif melakukan stash, checkout, dan membangun ulang model mental Anda.
Saat Anda perlu mengintegrasikan worktree dengan alur kolaborasi tim seperti pull request dan code review, GitHub Foundations skill track dari DataCamp membahas praktik esensial untuk bekerja efektif dengan tim terdistribusi.
Git Worktree FAQs
Dapatkah saya menggunakan Git worktree dengan GitHub Desktop, VS Code, atau alat GUI lainnya?⌄
Ya. Worktree terlihat oleh editor dan GUI Git sebagai folder proyek biasa. Anda dapat membuka setiap worktree sebagai proyek terpisah, dan sebagian besar alat—termasuk VS Code, IntelliJ, dan GitHub Desktop—menanganinya tanpa konfigurasi khusus.
Bagaimana Git worktree berinteraksi dengan remote seperti origin?⌄
Semua worktree berbagi direktori .git, sehingga mereka berbagi konfigurasi remote dan riwayat fetch yang sama. Anda tidak perlu menjalankan git fetch di setiap worktree—melakukan fetch di satu worktree memperbarui remote untuk semuanya. Pelacakan branch berperilaku persis sama seperti pada setup satu worktree.
Apa yang terjadi jika saya menghapus direktori worktree secara manual alih-alih menggunakan git worktree remove?⌄
Git tetap menganggap worktree tersebut ada dan menandainya sebagai “prunable.” Anda tidak akan merusak repositori, tetapi perintah Git mungkin menampilkan peringatan. Jalankan git worktree prune untuk membersihkan entri usang dan menghapus metadata yatim dengan aman.
Apakah Git worktree aman digunakan dengan monorepo besar atau sistem build seperti Bazel, Pants, atau Nx?⌄
Ya, tetapi artefak build dapat berlipat ganda dengan cepat. Setiap worktree memiliki direktori kerjanya sendiri, sehingga cache, lingkungan virtual, dan output build diduplikasi. Untuk monorepo, umum untuk mengonfigurasi alat build agar menyimpan cache di luar worktree guna menghindari penggunaan disk yang berlebihan.
Dapatkah saya menggunakan Git worktree dengan submodule atau sparse checkout⌄
Ya. Submodule dan sparse checkout berfungsi normal di worktree, tetapi Anda perlu menginisialisasi atau memperbaruinya secara terpisah di setiap worktree karena konten direktori kerja tidak dibagikan. Data Git yang mendasari tetap dibagikan, tetapi file yang di-checkout bersifat independen.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Anda sedang mengerjakan sebuah feature branch ketika rekan tim meminta Anda meninjau pull request mereka. Anda bisa melakukan stash pada perubahan, beralih branch, dan berharap masih ingat posisi terakhir. Atau Anda bisa melakukan commit pekerjaan yang belum selesai demi menghindari hilangnya perubahan. Lalu ada hotfix darurat: produksi down, sementara Anda sedang berada di tengah refactoring yang menyentuh setengah codebase. Setiap perpindahan konteks seperti ini memakan waktu setup 10–15 menit dan memecah fokus Anda.
Git worktree mengatasinya dengan memungkinkan Anda checkout beberapa branch secara bersamaan di direktori terpisah. Alih-alih melakukan stash atau commit pekerjaan yang belum rampung, Anda cukup
cdke direktori lain tempat branch lain sudah di-checkout. Kerjakan hotfix, deploy, lalucdkembali ke pekerjaan fitur Anda persis seperti sebelumnya.Dalam tutorial ini, saya akan menunjukkan cara membuat dan mengelola worktree, menghindari jebakan umum, dan mengintegrasikannya ke alur kerja harian Anda. Anda sebaiknya sudah memahami branch Git, commit, dan operasi baris perintah dasar. Jika Anda perlu menyegarkan dasar-dasar Git terlebih dahulu, saya merekomendasikan tutorial Introduction to Git dari DataCamp untuk mencakup hal-hal esensial.
Apa Itu Git Worktree?
Git worktree adalah fitur bawaan yang membuat direktori kerja tambahan yang ditautkan ke repositori yang sama. Direktori kerja utama Anda adalah worktree utama, dan setiap worktree tambahan yang Anda buat mendapatkan direktori sendiri dengan branch-nya sendiri yang di-checkout. Semua worktree ini terhubung ke repositori
.gityang sama.Arsitektur repositori bersama ini berarti commit yang Anda buat di worktree mana pun akan langsung muncul di basis data Git bersama, dapat diakses dari semua worktree lain. File-file itu sendiri tetap independen — mengedit
train.pydi satu worktree hanya memengaruhi direktori tersebut hingga Anda melakukan commit pada perubahan.Mengapa tidak hanya menggunakan terminal berbeda?
Anda tidak dapat membuka beberapa terminal di direktori yang sama dan bekerja pada branch berbeda secara bersamaan. Git hanya mengizinkan satu branch di-checkout pada satu waktu per direktori. Ketika Anda menjalankan
git checkout feature-bdi satu terminal, itu mengubah file untuk setiap terminal yang menunjuk ke direktori tersebut.Git worktree mengatasinya dengan memberikan setiap branch direktori sendiri. Setiap direktori sepenuhnya independen dengan file, proses yang berjalan, dan artefak build miliknya. Berpindah antar branch menjadi
cd ../different-directoryalih-alihgit checkout different-branch.Prasyarat Git Worktree
Sebelum menggunakan git worktree, verifikasi pengaturan Anda:
git --versionuntuk memeriksa. Git worktree dirilis pada 2015, jadi sebagian besar instalasi sudah memilikinyaPeriksa bahwa worktree tersedia:
Jika ini menampilkan halaman bantuan, Anda siap.
Kapan menggunakan git worktree
Git worktree bekerja dengan baik saat perpindahan branch akan mengganggu pekerjaan Anda saat ini:
Lewati untuk tugas cepat di bawah 10 menit di mana
git checkoutlebih sederhana, atau saat Anda fokus pada satu pekerjaan tanpa gangguan yang diharapkan.Membuat Worktree Pertama Anda
Cara terbaik memahami git worktree adalah membuat satu dan melihatnya langsung. Kita akan menelusuri perintah dasar, mengeksplorasi struktur yang dibuat Git, dan mengamati bagaimana perubahan mengalir antar worktree.
Menyiapkan repositori contoh
Sebelum masuk ke worktree, Anda memerlukan repositori Git untuk dikerjakan. Jika Anda sudah memiliki proyek Python dengan beberapa branch, lanjutkan ke bagian berikutnya. Jika belum, mari cepat menyiapkan pipeline ML sederhana:
Buat README dan skrip Python:
Verifikasi file telah dibuat:
Commit file-file ini dan buat feature branch:
Sekarang Anda memiliki repositori dengan dua branch:
main(branch saat ini) danfeature-preprocessing.Pembuatan worktree dasar
Membuat worktree untuk branch yang sudah ada hanya butuh satu perintah. Mari checkout
feature-preprocessingdi direktori terpisah:Ini membuat direktori baru bernama
ml-pipeline-preprocessingsatu level di atas lokasi Anda saat ini, melakukan checkout branchfeature-preprocessingdi sana, dan menautkannya ke repositori yang sudah ada.Git mengonfirmasi pembuatan:
Untuk pekerjaan yang benar-benar baru, buat branch dan worktree sekaligus:
Flag
-bmembuat branch baru bernamafeature-visualizationdan melakukan checkout di worktree baru.Mengeksplorasi struktur worktree
Dengan worktree yang dibuat, kini Anda memiliki beberapa direktori pada filesystem. Untuk melihat semuanya:
Baris pertama menunjukkan worktree utama — direktori asli yang berisi folder
.git. Baris kedua menunjukkan worktree tertaut. Keduanya menampilkan hash commit saat ini dan branch yang di-checkout.Setiap direktori worktree berfungsi seperti repositori Git lengkap. Anda dapat menavigasi ke dalamnya, mengedit file, menjalankan
git status, dan melakukan commit. Worktree tertaut tidak berisi direktori.gitpenuh—sebagai gantinya, mereka memiliki file.gityang menunjuk kembali ke repositori utama. Di dalam direktori.gitutama, folderworktreesmenyimpan metadata tentang setiap worktree tertaut.Bekerja di dalam worktree
Navigasikan ke worktree
feature-preprocessingdan buat sebuah commit:Commit berjalan seperti biasa:
Kembali ke worktree utama Anda dan periksa riwayat commit:
Commit baru Anda muncul:
Perhatikan bagaimana commit langsung muncul di kedua lokasi tanpa perintah tambahan.
Use Case Git Worktree
Kini setelah Anda tahu cara membuat dan bekerja di worktree, mari lihat skenario praktis di mana worktree menyelesaikan masalah pengembangan nyata.
Alur kerja code review
Rekan tim Anda membutuhkan umpan balik pada PR mereka. Alih-alih melakukan stash perubahan dan berpindah branch, buat direktori terpisah untuk review:
Uji perubahan dan tinggalkan masukan Anda. Setelah selesai:
Pekerjaan asli Anda tetap tidak tersentuh. Tidak perlu stash atau pindah konteks. Untuk strategi lebih lanjut tentang code review yang efektif, lihat panduan praktik terbaik code review dari DataCamp.
Hotfix darurat
Tanpa worktree:
Dengan worktree:
Perbaiki dan deploy:
Anda kembali ke pekerjaan refactoring dalam hitungan detik, dengan semua file persis seperti sebelumnya.
Pengembangan fitur paralel
Anda sedang mengimplementasikan metrik kustom dan data loader baru — dua fitur independen. Siapkan satu worktree untuk masing-masing:
Filesystem Anda kini terlihat seperti ini:
Jalankan kedua fitur secara paralel — masing-masing di terminalnya:
Kedua proses berjalan bersamaan tanpa konflik. Saat sebuah fitur selesai, merge dan hapus worktree-nya:
Mengelola dan Membersihkan Worktree
Menampilkan daftar worktree
Untuk melihat semua worktree di sebuah repositori:
Setiap baris menunjukkan path direktori, hash commit saat ini, dan branch yang di-checkout. Entri pertama selalu worktree utama Anda (yang berisi folder
.git), dan sisanya adalah worktree tertaut.Untuk scripting atau navigasi cepat, ekstrak hanya path-nya:
Menghapus worktree
Saat Anda menyelesaikan pekerjaan di sebuah worktree, hapus dengan benar:
Git melindungi dari kehilangan data. Jika Anda memiliki perubahan yang belum di-commit:
Paksa penghapusan jika Anda yakin:
Jika sebuah worktree terkunci, gunakan
--forcedua kali:Jika Anda menghapus direktori worktree secara manual (
rm -rfatau file manager), Git masih melacaknya secara internal. Bersihkan referensi usang:Pratinjau apa yang akan di-prune:
Praktik Terbaik dan Jebakan Umum
Mari kita lihat beberapa cara untuk memaksimalkan penggunaan worktree dan cara menghindari beberapa kesalahan umum.
Organisasi worktree
Lokasi Anda menempatkan worktree itu penting. Kebanyakan developer menempatkannya sebagai direktori saudara dari repositori utama:
Struktur ini menjaga semuanya di satu tempat dan membuat path mudah diprediksi. Pola
projectname-branchnamememberi tahu Anda persis apa isi setiap direktori.Sebagian developer memilih folder khusus:
Pilih satu pendekatan dan gunakan secara konsisten. Nama deskriptif seperti
ml-pipeline-user-authenticationmembuat direktori mudah dipahami, sementara nama generik sepertiml-pipeline-tempatauml-pipeline-2memaksa Anda untuk memeriksa isinya. Perlakukan worktree sebagai sementara—buat untuk tugas tertentu, lalu hapus saat selesai.Jebakan umum
Branch yang sama di beberapa worktree
Git mencegah checkout branch yang sama di dua worktree:
Perlindungan ini ada karena Anda bisa membuat commit yang saling bertentangan. Jika Anda memerlukan kode yang sama di dua tempat, buat branch baru.
Worktree terlupa dan ruang disk
Setiap worktree tetap berada di filesystem hingga Anda secara eksplisit menghapusnya. Worktree lama menumpuk; proyek bisa mengumpulkan 15+ worktree terlupa, memakan gigabyte.
Setiap worktree berisi salinan penuh file repositori Anda. Repositori 500MB dengan 5 worktree menghabiskan 2,5GB. Hapus worktree saat selesai:
Menanam worktree (nesting)
Jangan membuat worktree di dalam direktori worktree lain. Git mengizinkan ini, tetapi akan menciptakan struktur direktori yang membingungkan dan membuat pembersihan rentan kesalahan.
Optimasi alur kerja
Alias shell menghemat waktu jika Anda sering membuat worktree:
Untuk setup yang lebih kompleks, tulis fungsi yang membuat worktree dan mengonfigurasi lingkungan pengembangan Anda dalam satu langkah:
${PWD##*/}mengekstrak nama direktori saat ini. Menjalankanwt feature-loggingdariml-pipelinemembuatml-pipeline-feature-logging, menavigasi ke dalamnya, dan menyiapkan lingkungan virtual Python dengan dependensi.Membuat worktree menjadi satu perintah:
Sesuaikan ini untuk bahasa Anda: ganti setup Python dengan
bundle installuntuk Ruby,cargo builduntuk Rust, ataunpm installuntuk Node.js.Editor atau IDE Anda bekerja dengan worktree tanpa konfigurasi khusus. Setiap worktree hanyalah direktori, jadi bukalah seperti folder proyek lainnya. Sebagian besar editor modern mendukung membuka beberapa root proyek secara bersamaan — Anda bisa membuka tiga worktree dalam satu jendela dan beralih di sidebar.
Worktree Lanjutan: Pengembangan Paralel Dibantu AI
Jika Anda menggunakan asisten coding AI, worktree membuka alur kerja paralel yang kuat. Pendekatan ini semakin populer di kalangan developer dan tim pada 2024–2025.
Buat worktree terpisah untuk tugas berbeda:
Buka panel terminal untuk setiap worktree dan jalankan asisten AI Anda:
Setiap instance AI mengerjakan fitur berbeda tanpa saling mengganggu. Tim melaporkan dapat menyelesaikan pekerjaan dalam hitungan jam yang sebelumnya memakan waktu berhari-hari. Misalnya, incident.io menjalankan 4–5 agen Claude Code secara paralel menggunakan pola ini. Dalam satu kasus, Claude memperkirakan peningkatan UI memakan waktu 2 jam tetapi selesai dalam 10 menit.
Pertimbangan trade-off:
Ini bekerja dengan baik untuk fitur besar yang independen (masing-masing 30+ menit) di mana pekerjaan tidak menyentuh file yang sama, dan Anda memiliki kuota API yang cukup. Lewati untuk perbaikan bug cepat, fitur yang saling terkait erat, atau ketika mendekati batas laju API.
Kesimpulan
Ingat skenario di awal — rekan tim membutuhkan review PR saat Anda tengah mengerjakan fitur. Kini Anda tahu solusinya:
git worktree add ../ml-pipeline-review pr/branch-name, lalucduntuk mulai meninjau. Pekerjaan fitur Anda tetap tidak tersentuh. Tanpa stash, tanpa commit kode setengah jadi, tanpa beban mental membangun ulang konteks saat kembali. Dua direktori, dua branch, tanpa friksi.Git worktree tidak menambah kompleksitas pada alur kerja Anda — justru menguranginya. Setiap worktree hanyalah direktori dengan branch yang di-checkout. Namun kesederhanaan itu membuka sesuatu yang kuat: kemampuan untuk berpindah konteks seketika antar tugas tanpa beban kognitif melakukan stash, checkout, dan membangun ulang model mental Anda.
Saat Anda perlu mengintegrasikan worktree dengan alur kolaborasi tim seperti pull request dan code review, GitHub Foundations skill track dari DataCamp membahas praktik esensial untuk bekerja efektif dengan tim terdistribusi.