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 remote prune origin, чтобы очистить удаленные ссылки.
— 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просто упаковывает объекты и ссылки и удаляет объекты, на которые нет ссылок (с некоторым запасом прочности).
— Якуб Наребски

186
git remote update --prune

Следует обновить ветки всех пультов, добавляя новые и удаляя удаленные.

Изменить: команда удаленного обновления в основном извлекает список веток на пульте дистанционного управления. Эта --pruneопция избавит вас от ваших локальных веток удаленного отслеживания, которые указывают на ветки, которые больше не существуют на пульте дистанционного управления .


Это сработало для меня. Мне нужно было удалить удаленную ветку, которую по какой-то причине не удалось удалить с помощью обычного git push origin: <branch_name>
— n0denine

Было бы правильно сказать, что этот ответ делает то же, что и ответ Якуба Наребски, и многое другое? То есть подрезает и скачивает обновления?
— Фрэнк Тан

14

Также полезно для просмотра новых удаленных веток:

git fetch --all

Это мне очень помогло. Некоторая ошибка в Visual Studio git не позволяет отображать новые ветки, созданные после клонирования. Эта команда помогает отображать новые ветки
— Венкатеш Муниянди

хороший и простой, чувак, у
— тебя

2

Вы можете комбинировать -rи -dфлаги для удаления удаленных филиалов.


отличный совет! однако в этом случае есть несколько веток, которые уже были удалены, наверняка есть команда для получения этих обновлений
— Баин Маркев,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.