Выбор из источника с удаленными удаленными ветвями?

Когда я делаю git fetch origin, а источник имеет удаленную ветвь, он, похоже, не обновляет его в моем репозитории. Когда я делаю git branch -r, он все еще показывает origin/DELETED_BRANCH.

Как я могу это исправить?

Ответ 1

Вам нужно сделать следующее

git fetch -p

Это обновит локальную базу данных удаленных ветвей.

Ответ 2

Из http://www.gitguys.com/topics/adding-and-removing-remote-branches/

После того, как кто-то удалит ветку из удаленного репозитория, git не будет автоматически удалять ветки локального репозитория, когда пользователь выполняет git pull или git fetch. Однако, если пользователь хотел бы иметь все отслеживания, удаленные из своего локального репозитория, которые были удаленные в удаленном репозитории, они могут печатать:

git удаленный источник черноты

В качестве примечания, -p param из git fetch -p на самом деле означает "чернослив".
В любом случае, вы выбрали ненужные удаленные ветки, которые будут удалены из вашего локального репозитория.

Ответ 3

Вам нужно сделать следующее

git fetch -p

чтобы синхронизировать список веток. В руководстве git говорится

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

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

Ответ 4

Это сработало для меня.

git remote update --prune

Ответ 5

Что касается git fetch -p, его поведение изменилось в Git 1.9, и только Git 2.9.x/2.10 отражает это.

См. commit 9e70233 (13 июня 2016 г.) Джефф Кинг (peff).
(слияние Junio ​​C Hamano - gitster - в commit 1c22105, 06 июля 2016 г.

fetch: документ, что обрезка происходит перед извлечением

Это было изменено в 10a6cc8 (fetch --prune: выполнить черновик перед извлечением, 2014-01-02), но кажется, что никто в этой дискуссии не понял, что мы рекламировали "после" явно.

Итак, в документации теперь говорится:

Прежде чем извлечь, удалите любые ссылки удаленного отслеживания, которые больше не существуют на удаленном

Это потому, что:

Когда у нас есть ветвь удаленного отслеживания с именем "frotz/nitfol" из предыдущей выборки, а у восходящего потока теперь есть ветвь с именем "frotz", выборка не удалит "frotz/nitfol" с помощью git fetch --prune "от восходящего потока. Git сообщит пользователю об использовании" git remote prune ", чтобы устранить проблему.

Измените способ" fetch --prune", перемещая операцию обрезки до операции выборки. Таким образом, вместо того, чтобы предупреждать пользователя о конфликте, он автоматически исправляет его.

Ответ 6

Вот как вы обновляете информацию репо

git remote update