Як видалити видалені імена гілок із автозаповнення?


120

Я раніше git branch -d myBranchвидаляв гілку. Однак, коли я перебуваю на майстер і намагаюся перевірити нову гілку git checkout, myBranchвсе ще з’являється на вкладці-автозаповнення.

Як видалити ім'я myBranchз вкладки-автозаповнення для git checkout?


10
Є чи git branch -aще список або myBranchабо origin/myBranch? Зауважте, що навіть якщо myBranchйого не існує, git checkout myBranchвсе ще є дійсним ярликом, git checkout -b myBranch origin/myBranchякщо він origin/myBranchіснує.
twalberg

2
@twalberg варто опублікувати як відповідь.
cmbuckley

Відповіді:


81

Однією з можливих причин цього є те, що якщо віддалений відділення (наприклад origin/myBranch) все-таки існує, то це git checkout myBranchстане успіхом як альтернатива git checkout -b myBranch origin/myBranch. Це призначено як зручність для першого випадку виходу віддаленої гілки вперше, створюючи ідентичну локальну гілку відстеження.

Є й інші можливості, залежно від того, що саме ви використовуєте для завершення, але це одне з перших речей, які я перевірю. Якщо ви біжите git branch -a, і є origin/myBranchсписок (або один для віддаленого, крім origin, якщо у вас є такий), то це, ймовірно, винуватець.


2
Дякую! Це, здається, є винуватцем. origin/myBranchвсе ще існує. Якщо я видалив myBranchгілку в Github (через Інтернет-інтерфейс), чи безпечно мені зателефонувати, git branch -d origin/myBranchщоб видалити цю віддалену гілку?
Джон Гофман

99
@JohnHoffman Це повинно бути безпечно, але я думаю, що кращий спосіб був би git fetch --prune origin. Це очистить усі локальні гілки відстеження, яких більше немає на віддаленому пристрої.
twalberg

3
@twalberg Я не вважаю, що для видалення всіх старих гілок в автозаповненні достатньо просто видалити локальну та віддалену гілку. Я вважаю, що вам потрібно, щоб git fetch --prune originмісцеві посилання на віддалені відділення відходили в автозаповнення. Можливо, добре перенести це з коментаря до відповіді. У будь-якому випадку дякую за вашу відповідь, оскільки це допомогло мені!
timmyl

4
git branch -aповів мене на правильний шлях; мій колега запропонував git fetch --prune --allобрізати всі відмерлі гілки з усіх віддалених, що корисно при роботі з великою кількістю чортів з великою кількістю виделок.
ericsoco

173

git fetch --prune --all

Опублікуйте це як свою власну відповідь, оскільки це однорядне виправлення, але якщо ви проголосуєте, обов'язково проголосуйте за відповідь @ twalberg вище.

@ пропозиція Twalberg провести git branch -aмене на правильний шлях; мій колега запропонував git fetch --prune --allобрізати всі відмерлі гілки з усіх віддалених, що корисно при роботі з великою кількістю чортів з великою кількістю виделок.


19
Хоча прийнята відповідь дає гарне пояснення, чому це відбувається, ця відповідь представляє фактичне рішення проблеми, і тому слід прийняти ІМХО.
Патрік Осіті

3
Назви мертвих гілок досі відображаються в автозаповнення.
Фіцю
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.