The jawaban singkat
Jika Anda ingin penjelasan lebih rinci tentang perintah berikut, lihat jawaban panjang di bagian selanjutnya.
Menghapus cabang jarak jauh
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
Menghapus cabang lokal
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Menghapus cabang pelacakan jarak jauh lokal
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
The Jawaban panjang : ada tiga cabang yang berbeda untuk menghapus!
Saat Anda berurusan dengan menghapus cabang baik secara lokal maupun jarak jauh, perlu diingat bahwa ada tiga cabang berbeda yang terlibat :
- Cabang setempat
X
.
- Cabang asal terpencil
X
.
- Cabang pelacakan jarak jauh lokal yang melacak cabang
origin/X
jarak jauh X
.
Poster asli yang digunakan:
git branch -rd origin/bugfix
Yang hanya menghapus cabang pelacakan jarak jauh lokalnya origin/bugfix
, dan bukan cabang jarak jauh yang sebenarnya bugfix
aktif origin
.
Untuk menghapus cabang jarak jauh yang sebenarnya , Anda perlu
git push origin --delete bugfix
Detil tambahan
Bagian berikut ini menjelaskan detail tambahan untuk dipertimbangkan saat menghapus cabang pelacak jarak jauh dan Anda.
Mendorong untuk menghapus cabang jarak jauh juga menghapus cabang pelacakan jarak jauh
Perhatikan bahwa menghapus cabang jarak jauh X
dari baris perintah menggunakan git push
akan juga menghapus cabang pelacakan jarak jauh lokal origin/X
, sehingga tidak perlu memangkas cabang pelacakan jarak jauh yang sudah usang dengan git fetch --prune
atau git fetch -p
. Namun, tidak ada salahnya jika Anda tetap melakukannya.
Anda dapat memverifikasi bahwa cabang pelacakan jarak jauh origin/X
juga dihapus dengan menjalankan yang berikut:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Memangkas asal cabang pelacakan jarak jauh yang usang / X
Jika Anda tidak menghapus cabang jarak jauh Anda X
dari baris perintah (seperti di atas), maka repositori lokal Anda masih akan berisi cabang pelacakan jarak jauh (sekarang sudah usang) origin/X
. Ini dapat terjadi jika Anda menghapus cabang jarak jauh secara langsung melalui antarmuka web GitHub, misalnya.
Cara khas untuk menghapus cabang-cabang pelacakan jarak jauh yang sudah usang ini (karena Git versi 1.6.6) adalah dengan menjalankannya git fetch
dengan --prune
atau lebih pendek -p
. Perhatikan bahwa ini menghapus semua cabang pelacakan jarak jauh lokal yang sudah usang untuk cabang jarak jauh apa pun yang tidak lagi ada di remote :
git fetch origin --prune
git fetch origin -p # Shorter
Berikut adalah kutipan yang relevan dari catatan rilis 1.6.6 (penekanan milik saya):
"git fetch" pelajari --all
dan --multiple
opsi, untuk menjalankan fetch dari banyak repositori, dan --prune
opsi untuk menghapus cabang pelacakan jarak jauh yang menjadi basi. Ini membuat "git remote update" dan "git remote prune" kurang perlu (tidak ada rencana untuk menghapus "remote update" atau "remote prune", meskipun).
Alternatif untuk pemangkasan otomatis di atas untuk cabang pelacakan jarak jauh yang sudah usang
Atau, alih-alih memangkas cabang-cabang lokal Anda yang sudah ketinggalan zaman git fetch -p
, Anda dapat menghindari operasi jaringan tambahan dengan hanya menghapus cabang secara manual dengan bendera --remote
atau -r
:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Lihat juga