Відповіді:
Вам потрібно зробити наступне
git fetch -p
Це оновить локальну базу даних віддалених відділень.
origin
вилці: git fetch -p origin
Коли я тоді зробив git branch -r
неіснуючу віддалену гілку, більше не з’являвся.
git remote prune origin
і подібним до git pull --prune
зазначеного на stackoverflow.com/a/6127884/94687 та stackoverflow.com/a/17983126/94687 відповідно.
[deleted] (none) -> origin/ < branch name >
і гілка все ще показується на місцевому репо будь-якій ідеї, чому?
git branch
все ще відображаються гілки, які нібито були видалені.
Від http://www.gitguys.com/topics/adding-and-removing-remote-branches/
Після того, як хтось видалить гілку з віддаленого сховища, git не буде автоматично видаляти локальні гілки репозиторію, коли користувач виконує потяг git або git. Однак якщо користувачеві хочеться, щоб усі гілки відстеження були видалені з локального сховища, які були видалені у віддаленому сховищі, він може ввести:
git віддаленого походження чорносливу
Як зауваження, параметр -p від git fetch -p
насправді означає "чорнослив".
У будь-якому випадку ви вибрали, неіснуючі віддалені відділення будуть видалені з вашого локального сховища.
Вам потрібно зробити наступне
git fetch -p
щоб синхронізувати ваш список філій. У посібнику з git йдеться
-p
,--prune
Після вилучення видаліть всі посилання на віддалене відстеження, які більше не існують на пульті. Теги не підлягають обрізанню, якщо вони отримані лише через автоматичне відстеження тегів за замовчуванням або через--tags
опцію. Однак, якщо теги витягнуті завдяки явній респекції (або в командному рядку, або у віддаленій конфігурації, наприклад, якщо віддалений був клонований за допомогою--mirror
параметра), вони також підлягають обрізці.
Мені особисто подобається використовувати, git fetch origin -p --progress
оскільки він показує показник прогресу.
Щодо того git fetch -p
, його поведінка змінилася в Git 1.9, і лише Git 2.9.x / 2.10 відображає це.
Див. Комітет 9e70233 (13 червня 2016) Джеффа Кінга ( peff
) .
(Об’єднав Хуніо С Хамано - gitster
- у комітеті 1c22105 , 06 липня 2016 р.)
fetch
: документ, що обрізка відбувається перед отриманнямЦе було змінено в 10a6cc8 (
fetch --prune
: Запустити чорнослив до отримання, 2014-01-02), але, здається, ніхто в цій дискусії не зрозумів, що ми рекламували "після" прямо.
Отже, у документації зараз зазначено:
Перед тим, як отримати, видаліть будь-які посилання віддаленого відстеження, які більше не існують на пульті
Це тому, що:
Коли у нас є відділення віддаленого відстеження з назвою "
frotz/nitfol
" з попереднього вибору, а зараз у верхній течії є гілка під назвою "frotz
", вилучення не вдасться видалити "frotz/nitfol
" з "git fetch --prune
" з висхідного потоку. git сповістить користувача використовувати "git remote prune
" для вирішення проблеми.Змініть спосіб "
fetch --prune
" роботи, перемістивши операцію обрізки перед операцією отримання. Таким чином, замість попередження користувача про конфлікт, він автоматично виправляє його.