Bagaimana cara menghapus nama cabang yang dihapus dari pelengkapan otomatis?

120

Saya biasa git branch -d myBranchmenghapus cabang. Namun, ketika saya berada di master dan mencoba untuk checkout cabang baru dengan git checkout, myBranchmasih muncul di tab-autocomplete.

Bagaimana cara menghapus nama myBranchdari tab-pelengkapan otomatis git checkout?

John Hoffman
sumber
10
Apakah git branch -amasih daftar myBranchatau origin/myBranch? Perhatikan bahwa, meskipun myBranchtidak ada, git checkout myBranchmasih merupakan pintasan yang valid git checkout -b myBranch origin/myBranchjika origin/myBranchada.
twalberg
2
@twalberg layak diposting sebagai jawaban.
cmbuckley

Jawaban:

81

Salah satu alasan yang mungkin untuk ini adalah, jika cabang jarak jauh (mis. origin/myBranch) Masih ada, maka git checkout myBranchakan berhasil sebagai alternatif git checkout -b myBranch origin/myBranch. Ini dimaksudkan sebagai kemudahan untuk kasus umum pembayaran keluar cabang jarak jauh untuk pertama kalinya, membuat cabang pelacakan lokal bernama identik.

Ada kemungkinan lain juga, tergantung pada apa yang sebenarnya Anda gunakan untuk penyelesaian, tapi itu salah satu hal pertama yang akan saya periksa. Jika Anda menjalankan git branch -a, dan ada yang origin/myBranchterdaftar (atau satu untuk remote selain origin, jika Anda punya), maka kemungkinan besar penyebabnya.

twalberg.dll
sumber
2
Terima kasih! Sepertinya itu pelakunya. origin/myBranchmasih ada. Jika saya menghapus myBranchcabang di Github (melalui antarmuka online), apakah aman bagi saya untuk menelepon git branch -d origin/myBranchuntuk menghapus cabang jarak jauh itu?
John Hoffman
99
@JohnHoffman Itu seharusnya aman, tapi saya pikir cara yang lebih baik adalah git fetch --prune origin. Itu akan membersihkan semua cabang pelacakan lokal yang tidak lagi ada di remote.
twalberg
3
@twalberg Saya tidak percaya hanya dengan menghapus cabang lokal dan jarak jauh sudah cukup untuk menyingkirkan semua cabang lama di pelengkapan otomatis. Saya yakin Anda perlu agar git fetch --prune originreferensi lokal ke cabang jarak jauh menghilang dalam pelengkapan otomatis. Mungkin bagus untuk memindahkannya dari komentar ke jawaban. Bagaimanapun, terima kasih atas tanggapan Anda karena itu membantu saya!
timmyl
4
git branch -amembawa saya ke jalur yang benar; rekan kerja saya menyarankan git fetch --prune --alluntuk memangkas semua cabang mati dari semua remote, yang berguna saat bekerja dengan banyak pengembang dengan banyak garpu.
ericsoco
173

git fetch --prune --all

Memposting ini sebagai jawaban sendiri karena ini adalah perbaikan satu baris, tetapi jika Anda memilih, pastikan untuk memilih jawaban @ twalberg di atas.

Saran @ twalberg untuk git branch -amembawa saya ke jalur yang benar; rekan kerja saya menyarankan git fetch --prune --alluntuk memangkas semua cabang mati dari semua remote, yang berguna saat bekerja dengan banyak pengembang dengan banyak garpu.

ericsoco
sumber
19
Meskipun jawaban yang diterima memberikan penjelasan yang bagus mengapa hal ini terjadi, jawaban ini menyajikan solusi aktual untuk masalah tersebut dan karenanya harus diterima IMHO.
Patrick Oscity
3
nama cabang mati masih ditampilkan dalam pelengkapan otomatis.
Fitsyu