Làm cách nào để xóa tên chi nhánh đã xóa khỏi tự động hoàn thành?


120

Tôi đã từng git branch -d myBranchxóa một nhánh. Tuy nhiên, khi tôi làm chủ và cố gắng kiểm tra một nhánh mới git checkout, myBranchvẫn xuất hiện trong tab-tự động hoàn thành.

Làm cách nào để xóa tên myBranchkhỏi tab-autocomplete git checkout?


10
Liệu git branch -avẫn danh sách một trong hai myBranchhoặc origin/myBranch? Lưu ý rằng, ngay cả khi myBranchkhông tồn tại, git checkout myBranchvẫn là một phím tắt hợp lệ cho git checkout -b myBranch origin/myBranchnếu origin/myBranchtồn tại.
twalberg

2
@twalberg đáng để đăng như một câu trả lời.
cmbuckley,

Câu trả lời:


81

Một lý do có thể cho điều này là, nếu một nhánh từ xa (ví dụ origin/myBranch) vẫn tồn tại, thì nó git checkout myBranchsẽ thành công như một sự thay thế cho git checkout -b myBranch origin/myBranch. Điều này nhằm mục đích thuận tiện cho trường hợp phổ biến là thanh toán chi nhánh từ xa lần đầu tiên, tạo ra một chi nhánh theo dõi cục bộ được đặt tên giống hệt nhau.

Cũng có những khả năng khác, tùy thuộc vào chính xác những gì bạn đang sử dụng để hoàn thành, nhưng đó là một trong những điều đầu tiên tôi muốn kiểm tra. Nếu bạn chạy git branch -avà có một origin/myBranchdanh sách (hoặc một cho một điều khiển từ xa origin, nếu bạn có điều đó), thì đó có thể là một thủ phạm.


2
Cảm ơn! Đó dường như là thủ phạm. origin/myBranchvẫn còn tồn tại. Nếu tôi đã xóa myBranchchi nhánh trên Github (thông qua giao diện trực tuyến), tôi có thể gọi git branch -d origin/myBranchđể xóa chi nhánh đó từ xa không?
John Hoffman,

99
@JohnHoffman Điều đó sẽ an toàn, nhưng tôi nghĩ cách tốt hơn sẽ là git fetch --prune origin. Điều đó sẽ làm sạch tất cả các nhánh theo dõi cục bộ không còn tồn tại trên điều khiển từ xa.
twalberg

3
@twalberg Tôi không tin rằng chỉ cần xóa nhánh cục bộ và từ xa là đủ để loại bỏ tất cả các nhánh cũ trong chế độ tự động hoàn thành. Tôi tin rằng bạn cần để git fetch --prune origincác tham chiếu cục bộ đến các nhánh từ xa biến mất trong chế độ tự động hoàn thành. Có thể tốt để chuyển điều đó từ nhận xét sang câu trả lời. Trong mọi trường hợp, cảm ơn vì phản hồi của bạn vì nó đã giúp tôi!
timmyl

4
git branch -ađã dẫn tôi đi đúng hướng; đồng nghiệp của tôi đề nghị git fetch --prune --allcắt tỉa tất cả các nhánh chết khỏi tất cả các điều khiển từ xa, điều này rất hữu ích khi làm việc với nhiều nhà phát triển với rất nhiều fork.
ericsoco

173

git fetch --prune --all

Đăng điều này làm câu trả lời của riêng mình vì đây là bản sửa lỗi một dòng, nhưng nếu bạn bỏ phiếu, hãy chắc chắn bỏ phiếu cho câu trả lời của @ twalberg ở trên.

gợi ý của @ twalberg để git branch -adẫn tôi đi đúng hướng; đồng nghiệp của tôi đề nghị git fetch --prune --allcắt tỉa tất cả các nhánh chết khỏi tất cả các điều khiển từ xa, điều này rất hữu ích khi làm việc với nhiều nhà phát triển với rất nhiều fork.


19
Trong khi câu trả lời được chấp nhận đưa ra lời giải thích tốt đẹp tại sao điều này xảy ra, câu trả lời này trình bày một giải pháp thực tế cho vấn đề và do đó nên được IMHO chấp nhận.
Patrick Oscity

3
tên các nhánh chết vẫn đang hiển thị trong chế độ tự động hoàn thành.
Fitsyu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.