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


Відповіді:


811

Вам потрібно зробити наступне

git fetch -p

Це оновить локальну базу даних віддалених відділень.


1
дуже тобі дякую. Раніше ці гілки видаляли вручну.
Максим Дмитрієв

4
Чомусь ваша команда не працювала, але ця була зроблена для неіснуючої віддаленої гілки у моїй originвилці: git fetch -p origin Коли я тоді зробив git branch -r неіснуючу віддалену гілку, більше не з’являвся.
oldfartdeveloper

11
Для повноти: він повинен бути таким же, як git remote prune originі подібним до git pull --pruneзазначеного на stackoverflow.com/a/6127884/94687 та stackoverflow.com/a/17983126/94687 відповідно.
imz - Іван Захарящев

6
хлопці, коли я це роблю, це говорить, [deleted] (none) -> origin/ < branch name >і гілка все ще показується на місцевому репо будь-якій ідеї, чому?
Buddhi741

4
Я отримую повідомлення про те, що мої гілки були видалені, але в роботі git branchвсе ще відображаються гілки, які нібито були видалені.
sdfsdf

91

Від http://www.gitguys.com/topics/adding-and-removing-remote-branches/

Після того, як хтось видалить гілку з віддаленого сховища, git не буде автоматично видаляти локальні гілки репозиторію, коли користувач виконує потяг git або git. Однак якщо користувачеві хочеться, щоб усі гілки відстеження були видалені з локального сховища, які були видалені у віддаленому сховищі, він може ввести:

git віддаленого походження чорносливу

Як зауваження, параметр -p від git fetch -pнасправді означає "чорнослив".
У будь-якому випадку ви вибрали, неіснуючі віддалені відділення будуть видалені з вашого локального сховища.


Мені це подобається, оскільки він не приносить нічого нового.
Marek R

30

Вам потрібно зробити наступне

git fetch -p

щоб синхронізувати ваш список філій. У посібнику з git йдеться

-p, --prune
Після вилучення видаліть всі посилання на віддалене відстеження, які більше не існують на пульті. Теги не підлягають обрізанню, якщо вони отримані лише через автоматичне відстеження тегів за замовчуванням або через --tagsопцію. Однак, якщо теги витягнуті завдяки явній респекції (або в командному рядку, або у віддаленій конфігурації, наприклад, якщо віддалений був клонований за допомогою --mirrorпараметра), вони також підлягають обрізці.

Мені особисто подобається використовувати, git fetch origin -p --progressоскільки він показує показник прогресу.



6

Щодо того 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" роботи, перемістивши операцію обрізки перед операцією отримання. Таким чином, замість попередження користувача про конфлікт, він автоматично виправляє його.

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