Git: оновлення інформації віддаленої гілки


125

У сховищі git видалена віддалена гілка, яку я не відстежую. Коли я друкую

git branch -r

видалена гілка все ще з’являється (і я можу це перевірити)

Яку команду git мені потрібно запустити, щоб оновити цю інформацію?

Відповіді:


39

Якщо ви виконуєте щось подібне

git branch -d -r remote_name/branch_name

ви видалите лише місцевий замовлення. Ця команда нічого не робить із віддаленим сховищем, тому вона все ще з’являється.

Рішення:

git push origin :branch_name

видалить віддалену гілку (зверніть увагу на ':') та

git branch -d branch_name

видалить ваш місцевий замовлення.

( Довідка )


146
Ви також можете запустити "git віддалене походження чорносливу", щоб очистити віддалені посилання.
— cmcginty

3
Це видалить усі гілки, які вже не відслідковуються віддаленим сховищем. Отже, будьте обережні.
— Гаррет Гайд

4
Я думаю, що також корисно знати, що, хоч і трохи більш багатослівний, ви можете також використовувати git push <remote> --delete <branchname>для видалення віддалених гілок.
— AeroCross

Зазвичай це працює, але я переглядаю ситуацію, коли віддалений список не оновлювався, тому я намагався видалити гілку, яка там не була. Таким чином, спочатку потрібне було рішення @Flo нижче .
— dgo

284

Якщо вилучені відділення віддаленого сховища були видалені, і ви хочете одразу оновити всі локальні гілки віддаленого відстеження, ви можете використовувати

$ git remote prune <remotename>

видалити всі застарілі гілки віддаленого відстеження для певного віддаленого (тобто тих, що слідують за гілками, видаленими у віддаленому сховищі)

Дивіться git remoteдокументацію.


Дякую @Casey та @Jakub за відповіді! Як випливає, що інформація про віддалене відділення, що зберігається локально, не оновлюється наступного разу, коли я використовую git fetch?
— JJD

4
@JJD: Тому що ви, можливо, базували свою роботу на віддаленій гілці, якої вже немає. Тому зникнення без запиту вважалося поганою ідеєю. Ось чому потрібно чітко обрізати гілки дистанційного відстеження.
— Якуб Нарубський

Чи "git gc" також очищає застарілі віддалені гілки?
— Джеймс Уолд

@JamesWald: Ні, це не так. git gcпросто запаковує об'єкти і refs, а також видаляє нерозв'язані об'єкти, перебуваючи при цьому (з деяким запасом безпеки).
— Якуб Нарбський

186
git remote update --prune

Потрібно оновити всі віддалені гілки, додавши нові та видаливши видалені.

Редагувати: команда віддаленого оновлення в основному отримує список гілок на пульті. Цей --pruneваріант позбудеться локальних гілок віддаленого відстеження, які вказують на гілки, яких більше немає на віддаленому .


Це працювало для мене. Мені потрібно було видалити віддалену гілку, яку з якихось причин не вдалося видалити звичайним походженням git push: <branch_name> '
— n0denine

Чи було б точно сказати, що ця відповідь робить те, що робить відповідь Якуба Нарбського та багато іншого? Тобто, він підрізає і отримує оновлення?
— Франк Тан

14

Також корисно для перегляду нових віддалених гілок:

git fetch --all

Це мені дуже допомогло. Деякі помилки в Visual studio git заважають показувати нові гілки, створені після клонування. Ця команда допомагає показувати нові гілки
— Venkatesh Muniyandi

приємно n простого thx чувак, мати бронзовий знак відповіді на будинок :)
— danday74

2

Ви можете комбінувати -rі -dпрапори, щоб видалити віддалені гілки.


чудова порада! однак у цьому випадку є кілька гілок, які вже були видалені, напевно є команда для отримання цих оновлень
— Бейн Маркев,

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