Di macOS, hapus linked worktree yang sudah selesai dari Terminal dengan git worktree remove, tetapi periksa terlebih dahulu apakah worktree tersebut memuat perubahan yang masih Anda perlukan. Git menghapus worktree yang bersih; jika kotor, Git akan berhenti kecuali Anda memaksakan penghapusan. Untuk menyimpan pekerjaan yang belum selesai, lakukan commit atau stash sebelum menghapus direktori tersebut. Jangan menambahkan --force hanya untuk melewati peringatan Git: hal itu dapat membuang berkas lokal milik worktree tersebut. Langkah-langkah ini berlaku untuk linked worktree, bukan direktori kerja utama repositori. Dokumentasi worktree Git
1. Temukan worktree dan periksa statusnya
Buka Terminal dan buka repositori utama atau linked worktree mana pun yang tergabung dalam repositori yang sama. Untuk melihat semua jalur (path) dan cabang (branch) worktree terkait, jalankan:
git worktree list
Salin jalur persis dari worktree yang sudah selesai. Kemudian periksa statusnya dari dalam worktree tersebut, dengan mengapit jalur menggunakan tanda kutip jika memuat spasi:
cd "/path/to/finished-worktree"
git status --short --branch
Output status membantu menampilkan berkas terlacak (tracked files) yang dimodifikasi atau di-stage serta berkas yang tidak terlacak (untracked files). Periksa juga worktree di Finder untuk melihat berkas lokal yang dibutuhkan oleh alur kerja Anda. Berkas yang diabaikan (ignored) oleh Git mungkin tidak muncul dalam output status biasa. Jika Anda tidak yakin apakah ada hal di dalam direktori yang boleh dibuang, berhentilah sebelum menghapus dan buat cadangan terpisah atau pertahankan direktori tersebut. Git worktree berbagi data repositori dengan worktree utamanya, tetapi memiliki checkout dan indeks tersendiri; menghapus checkout bukanlah operasi pencadangan serbaguna. Dokumentasi Git worktree
2. Simpan perubahan yang ingin Anda pertahankan
Jika pekerjaan sudah siap untuk disimpan di dalam repositori, lakukan commit pada cabang milik worktree tersebut. Pertama, tinjau status dan perbedaannya (diff), lalu stage hanya berkas yang ingin Anda sertakan dan lakukan commit:
git diff
git add path/to/file
git commit -m "Describe the finished work"
Hapus spasi awal yang tidak disengaja sebelum git commit jika shell Anda memperlakukannya secara tidak semestinya; bentuk yang bersih adalah git commit -m "Describe the finished work". Commit akan menyimpan perubahan dalam riwayat Git, tetapi pastikan perubahan tersebut berada di cabang yang diinginkan sebelum Anda menghapus worktree.
Jika perubahan belum selesai, lakukan stash pada editan yang terlacak dan berkas yang tidak terlacak sebagai gantinya:
git stash push -u -m "Before removing finished worktree"
git stash list
Opsi -u menyertakan berkas yang tidak terlacak. Berkas yang diabaikan tidak disertakan, jadi simpan konfigurasi lokal yang diabaikan, berkas hasil pembuatan (generated files), atau data lain yang diperlukan secara terpisah. Pastikan stash baru muncul dalam daftar sebelum melanjutkan. Stash adalah milik repositori, dan Anda nantinya dapat menerapkan perubahan yang disimpan tersebut dari worktree lain dengan git stash apply stash@{0}; verifikasi nomor entri terlebih dahulu, karena stash berikutnya dapat mengubah urutan daftar. Menerapkan stash dapat menimbulkan konflik, jadi periksa hasilnya sebelum menghapus stash tersebut. Dokumentasi Git stash
3. Hapus worktree yang bersih
Setelah melakukan commit atau men-stash perubahan yang Anda butuhkan, keluarlah dari direktori target dan jalankan perintah penghapusan dari worktree lain di repositori yang sama. Gunakan jalur persis yang dilaporkan oleh git worktree list:
cd "/path/to/main-repository"
git worktree remove "/path/to/finished-worktree"
git worktree list
Daftar kedua adalah konfirmasi yang berguna bahwa Git tidak lagi mencantumkan checkout tersebut. Dokumentasi Git menyatakan bahwa secara default remove hanya menerima worktree yang bersih; berkas yang tidak terlacak atau modifikasi pada berkas yang terlacak dapat mencegah penghapusan. Dokumentasi Git worktree
Jika penghapusan melaporkan bahwa worktree tidak bersih, jangan beralih ke git worktree remove --force kecuali Anda telah memutuskan bahwa setiap berkas lokal yang tersisa boleh dibuang. Kembalilah ke worktree tersebut, periksa git status, dan simpan berkas atau perubahan yang tersisa terlebih dahulu. Secara khusus, stash tidak menyertakan berkas yang diabaikan, dan submodule mungkin memiliki perubahannya sendiri yang memerlukan penanganan terpisah.
Jika Anda sudah menghapus folder tersebut di Finder
Jika Anda menghapus direktori linked worktree di luar Git, catatan administratifnya mungkin masih tertinggal. Dari repositori utama, jalankan git worktree list dan periksa apakah jalur yang hilang ditandai sebagai prunable. Git menyediakan git worktree prune untuk menghapus catatan worktree yang direktorinya sudah hilang; perintah ini tidak memulihkan berkas proyek yang telah dihapus. Gunakan perintah ini hanya setelah memastikan bahwa direktori tersebut benar-benar hilang dan Anda tidak memerlukan isinya. Untuk pembersihan di masa mendatang, gunakan git worktree remove agar Git memperbarui metadata worktree sebagai bagian dari proses penghapusan. Dokumentasi Git worktree
Pembersihan yang aman berakhir dengan checkout yang selesai telah dihapus, setiap perubahan yang ingin Anda pertahankan telah di-commit atau di-stash, dan berkas lokal terabaikan yang Anda butuhkan telah disimpan secara terpisah. Biarkan worktree tetap di tempatnya kapan pun Anda tidak dapat memastikan bahwa sisa isinya boleh dibuang.