Branch fitur yang sudah tergabung ke main menyelesaikan tugas hidupnya: pekerjaannya utuh di riwayat utama, namanya tinggal bekal tidak perlu. Membiarkannya di remote membuat daftar cabang membludak, rekan baru bingung mana yang aktif, dan referensi usang bermunculan di clone semua orang — persoalan yang kita diagnosis di chapter Remote Branch Management
. Chapter ini menutup siklusnya: menghapus branch dari remote dengan git push origin --delete, memahami sintaks lamanya, merapikan cabang lokal yang tertinggal, dan memverifikasi hasil akhirnya.
Satu Branch yang Sudah Digabungkan #
Lab-nya mengikuti alur kerja nyata: bare repository proyek-utama.git berisi satu commit awal, Budi meng-clone-nya lalu membuat branch fitur:
git switch -c fiturOutput yang Dihasilkan:
Switched to a new branch 'fitur'Halaman pengiriman dibuat, commit dijalankan, lalu branch dikirim dengan -u:
git push -u origin fiturOutput yang Dihasilkan:
To /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-b/latihan-hapus/proyek-utama.git
* [new branch] fitur -> fitur
branch 'fitur' set up to track 'origin/fitur'.Selanjutnya Budi kembali ke main, menambah daftar produk agar main ikut maju, lalu menggabungkan fitur:
git merge fiturOutput yang Dihasilkan:
Merge made by the 'ort' strategy.
pengiriman.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 pengiriman.mdBentuk penggabungannya terlihat di graf:
git log --oneline --graph -6Output yang Dihasilkan:
* 55de459 Merge branch 'fitur'
|\
| * d846178 Tambah halaman pengiriman
* | 6123f82 Tambah daftar produk
|/
* bf0d4bd Buat README tokoPuncak graf adalah commit merge; seluruh isi fitur kini terjangkau dari main. Hasil ini dikirim ke remote — dan Siti ikut meng-clone setelahnya, sehingga salinannya mengenal fitur. Saatnya membereskan.
Menghapus dengan push –delete #
Bentuk modernnya satu perintah eksplisit:
git push origin --delete fiturOutput yang Dihasilkan:
To /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-b/latihan-hapus/proyek-utama.git
- [deleted] fiturPenanda - [deleted] fitur mencatat hilangnya branch fitur dari remote. Pesan ini singkat saja — hash posisi terakhirnya tidak ikut dicetak; komitmen yang pernah tercatat tetap aman selama masih terjangkau dari branch lain, dan di sini seluruhnya sudah tergabung ke main. Perintah yang sama pernah kita lihat dari sisi penghapus di chapter git fetch
dan dari sisi penerima di chapter Remote Branch Management
. Yang mengejutkan justru keluaran git branch -r sesudahnya:
git branch -rOutput yang Dihasilkan:
origin/HEAD -> origin/main
origin/mainorigin/fitur ikut lenyap dari salinan Budi tanpa perintah prune: push yang menghapus cabang remote sekaligus membereskan salinan penunjuk di repository pengirimnya. Kebalikannya tidak berlaku — penghapusan dari sisi orang lain, seperti yang dialami Siti, menuntut penyapuan terpisah.
Sintaks Lama: push origin :fitur #
Sebelum flag --delete ada, penghapusan ditulis lewat refspec yang kosong di sisi sumber:
git push origin :eksperimenPerintah ini dijalankan setelah Budi membuat dan mengirim branch percobaan eksperimen — lalu menyadarinya tidak jadi dipakai. Keluarannya bentuk yang sama:
Output yang Dihasilkan:
To /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-b/latihan-hapus/proyek-utama.git
- [deleted] eksperimenLogikanya ada di pola refspec src:dst: kiri sumber, kanan tujuan. Mengirim apa pun ke eksperimen di remote dengan sumber yang tidak disebut berarti memindahkan penunjuk ke ketiadaan — alias menghapus. Sintaks titik dua ini masih berfungsi dan kerap ditemui di dokumentasi lama, tetapi --delete menang jelas untuk keterbacaan; keduanya terdokumentasi di dokumentasi git push
.
Merapikan Cabang Lokal #
Remote sudah bersih; meja kerja belum. Cabang lokal tidak ikut terhapus oleh penghapusan di remote:
git switch mainOutput yang Dihasilkan:
Switched to branch 'main'
Your branch is up to date with 'origin/main'.git branch -d fiturOutput yang Dihasilkan:
Deleted branch fitur (was d846178).Baris Deleted branch fitur (was d846178). — inilah keluaran yang memuat hash posisi terakhir, dicetak oleh penghapusan lokal, bukan remote. Flag -d sengaja hanya mau menghapus branch yang sudah tergabung; fitur aman karena isinya utuh di main. Giliran eksperimen yang tidak pernah tergabung:
git branch -D eksperimenOutput yang Dihasilkan:
Deleted branch eksperimen (was f925395).Flag -D (huruf besar) menghapus tanpa memeriksa tergabung — keputusan yang harus sadar karena komitmen yang belum tergabung ikut terlepas. Perilaku kedua flag dibedah lengkap di chapter Menghapus Branch
.
Referensi Tertinggal di Clone Lain #
Siti meng-clone sebelum fitur dihapus, jadi salinannya masih memegang penunjuk lama:
git branch -rOutput yang Dihasilkan (di clone siti):
origin/HEAD -> origin/main
origin/fitur
origin/mainInilah persis keadaan stale dari chapter Remote Branch Management — cabangnya tiada di remote, salinannya masih tercatat. Penyapuannya:
git fetch --pruneOutput yang Dihasilkan (di clone siti):
From /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-b/latihan-hapus/proyek-utama
- [deleted] (none) -> origin/fiturVerifikasi Akhir dan Kebiasaan Pasca Merge #
Hasil seluruh perapian bisa diperiksa dari satu potret:
git remote show originOutput yang Dihasilkan:
* remote origin
Fetch URL: /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-b/latihan-hapus/proyek-utama.git
Push URL: /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-b/latihan-hapus/proyek-utama.git
HEAD branch: main
Remote branch:
main tracked
Local branch configured for 'git pull':
main merges with remote main
Local ref configured for 'git push':
main pushes to main (up to date)Hanya main yang tersisa — cabangnya tunggal, ikatannya satu, push-nya sejajar. Urutan perapian pasca merge yang sehat kini terangkai: hapus branch di remote, hapus cabang lokalnya, sapu referensi di clone lain bila perlu, lalu verifikasi. Pada alur kerja pull request, banyak layanan hosting menjalankan langkah pertama otomatis begitu pull request diterima — opsi “delete branch” setelah merge; sisanya tetap tugas kita di meja masing-masing, dan pola lengkapnya dibahas di chapter Feature Branch Workflow
.
Dengan ini section Remote Repository tuntas: remote dikenali, dikelola, diisi, dan dibersihkan. Namun perhatikan kembali keluaran-keluaran kita: riwayat main kini memuat commit merge, commit perbaikan, dan pesan yang kadang kurang rapi — bentuk yang masih jauh dari garis lurus yang kita kagumi di chapter Sinkronisasi Remote
. Menata ulang riwayat itulah pekerjaan besar berikutnya: section Rebasing dan Riwayat Lanjutan
mengajarkan rebase, interactive rebase, dan batas-batas aman menulis ulang sejarah.