Untuk memeriksa apakah branch Git lokal aman dihapus di macOS, periksa working tree Anda, bandingkan commit branch tersebut dengan branch yang ingin Anda pertahankan, dan periksa apakah branch tersebut sedang digunakan di worktree lain. Buka Terminal, masuk ke repositori, dan gunakan pemeriksaan branch yang telah di-merge dari Git sebagai bukti—bukan sebagai jaminan bahwa branch tersebut tidak bernilai. Jika Anda ragu, pertahankan branch tersebut sampai Anda memastikan hasil pekerjaannya telah tersimpan.
1. Buka repositori dan periksa perubahan yang belum selesai
Buka Terminal dari Aplikasi > Utilitas, atau gunakan Spotlight untuk mencarinya. Apple mendokumentasikan zsh sebagai shell default Terminal, dan perintah-perintah di bawah ini berfungsi pada pengaturan standar macOS. Di Terminal, berpindahlah ke direktori repositori; beri tanda kutip pada path jika mengandung spasi:
cd "/path/to/your/repository"
git status --short --branch
Output status menampilkan branch yang sedang di-checkout dan apakah file memiliki perubahan. Lakukan commit atau amankan perubahan file yang diinginkan sebelum berpindah branch. Pemeriksaan ini terpisah dari riwayat branch: working tree yang bersih tidak berarti commit branch tersebut telah di-merge. Demikian pula, perubahan yang belum di-commit tidak serta-merta terlindungi hanya karena Anda menghapus branch menggunakan opsi safe-delete normal milik Git.
2. Periksa apakah branch telah di-merge ke target yang tepat
Pertama, tentukan branch yang ingin Anda pertahankan, umumnya main atau develop. Jika saat ini Anda berada di branch kandidat yang akan dihapus, beralihlah ke branch target sebelum menghapus apa pun. Ganti feature/example dan main di bawah ini dengan nama branch Anda yang sebenarnya:
git switch main
git branch --merged main
git branch --no-merged main
Daftar pertama berisi branch lokal yang commit ujungnya (tip) dapat dijangkau dari main; daftar kedua memuat branch yang commit ujungnya tidak dapat dijangkau. Git mendeskripsikan git branch --merged sebagai daftar branch yang telah di-merge ke dalam commit yang ditentukan (atau HEAD jika tidak ada yang ditentukan). Ini adalah pengujian riwayat commit, sehingga hanya berguna jika main adalah branch yang seharusnya memuat pekerjaan tersebut. Branch yang di-merge ke branch rilis atau branch integrasi lain mungkin masih tampak belum di-merge terhadap main. Dokumentasi Git branch
Jika kandidat branch muncul di --merged main, itu adalah indikasi kuat bahwa commit-nya telah dapat dijangkau dari main. Pastikan fitur atau perbaikan bug tersebut memang ada di tempat yang diharapkan, terutama jika tim Anda menggunakan pull request, branch rilis, atau target merge yang berbeda. Jika branch tersebut muncul di bawah --no-merged, jangan hapus branch tersebut sampai Anda memeriksa commit apa saja yang hanya ada di branch itu.
3. Periksa commit dan pelacakan upstream
Untuk membandingkan kandidat branch dengan target, gunakan:
git log --oneline main..feature/example
Perintah ini menampilkan commit yang dapat dijangkau dari feature/example namun tidak dapat dijangkau dari main. Jika perintah tersebut mencetak commit, periksa commit-commit tersebut dan putuskan apakah perlu di-merge, di-cherry-pick, atau dipertahankan. Hasil yang kosong berarti kandidat branch tidak memiliki commit di luar main dalam perbandingan ini; ini tidak membuktikan bahwa nama branch atau tujuannya sudah tidak lagi dibutuhkan.
Suatu branch mungkin juga melacak remote branch. Periksa informasi pelacakannya dengan:
git branch -vv
Upstream adalah referensi terkonfigurasi yang digunakan oleh Git untuk operasi seperti pull dan push. Upstream yang hilang atau berstatus gone tidak membuktikan bahwa branch lokal aman untuk dihapus: commit-nya mungkin masih unik. Selain itu, referensi remote-tracking bisa saja usang sampai Anda melakukan fetch. Jika Anda ingin menyegarkan data remote-tracking, git fetch --prune origin akan mengambil data dari origin dan menghapus referensi remote-tracking yang usang sesuai refspec remote tersebut; perintah ini tidak menghapus branch lokal Anda. Dokumentasi Git fetch
4. Periksa worktree, lalu hapus dengan aman
Suatu branch dapat di-checkout di worktree tertaut lainnya. Git menolak untuk menghapus branch yang sedang di-checkout, jadi jika penghapusan ditolak, jalankan git worktree list dan periksa direktori yang terdaftar sebelum mengambil tindakan lebih lanjut. Pastikan juga bahwa kandidat branch bukanlah branch Anda saat ini; beralihlah ke target yang dituju terlebih dahulu. Dokumentasi Git branch
Jika Anda sudah memastikan bahwa hasil pekerjaannya tersimpan dan branch tersebut tidak lagi diperlukan, hapus menggunakan opsi terlindung milik Git:
git branch -d feature/example
Git hanya mengizinkan -d jika branch telah di-merge sepenuhnya ke upstream yang dikonfigurasi, atau ke HEAD jika tidak ada upstream yang dikonfigurasi. Jika Git menolak, anggap itu sebagai petunjuk untuk melakukan investigasi. -D memaksa penghapusan tanpa memedulikan status merge; opsi ini mengabaikan perlindungan tersebut dan tidak boleh dijadikan solusi rutin. Dokumentasi Git branch
Keputusan yang berhati-hati itu sederhana: hapus dengan -d hanya setelah hasil pekerjaan kandidat branch sudah ada di tujuan yang diharapkan, commit unik telah ditinjau, dan tidak ada worktree yang masih menggunakan branch tersebut. Jika salah satu dari pemeriksaan tersebut masih belum jelas, pertahankan branch tersebut dan pastikan kembali tujuannya terlebih dahulu.