Когда я делаю, git fetch originи у источника есть удаленная ветвь, это, кажется, не обновляет это в моем репозитории. Когда я делаю git branch -rэто все еще показывает origin/DELETED_BRANCH.
большое Вам спасибо. Я вручную удалил эти ветви раньше.
Максим Дмитриев
4
По какой-то причине ваша команда не сработала, но эта сработала для несуществующей удаленной ветки в моей ветке origin: git fetch -p origin когда я тогда делал git branch -r несуществующую удаленную ветку, больше не появлялся.
После того, как кто-то удалит ветку из удаленного репозитория, git не будет автоматически удалять ветви локального репозитория, когда пользователь выполняет git pull или git fetch. Однако если пользователь хочет удалить все ветви отслеживания из своего локального репозитория, которые были удалены из удаленного репозитория, он может ввести:
git remote prune origin
Как примечание, параметр -p от git fetch -pфактически означает «обрезать».
В любом случае, выбранные вами удаленные ветви будут удалены из вашего локального хранилища.
Мне нравится это, так как это не приносит ничего нового.
Marek R
30
Вам нужно сделать следующее
git fetch -p
для того, чтобы синхронизировать ваш список филиалов. Руководство Git говорит
-p, --prune
После извлечения удалите все ссылки на удаленное отслеживание, которые больше не существуют на пульте. Теги не подлежат сокращению, если они выбираются только из-за автоматического следования тега по умолчанию или из-за --tagsопции. Однако, если теги выбираются из-за явного refspec (либо в командной строке, либо в удаленной конфигурации, например, если удаленный был клонирован с --mirrorопцией), то они также подлежат сокращению.
Мне лично нравится использовать, git fetch origin -p --progressпотому что он показывает индикатор прогресса.
fetch: документ, подтверждающий, что отсечение происходит перед извлечением
Это было изменено в 10a6cc8 ( fetch --prune: Run prune перед загрузкой, 2014-01-02), но, похоже, никто в этом обсуждении не осознавал, что мы явно рекламировали «после».
Итак, в документации сейчас говорится:
Перед извлечением удалите все ссылки на удаленное отслеживание, которые больше не существуют на удаленном
Это потому:
Когда у нас есть ветвь удаленного отслеживания с именем " frotz/nitfol" из предыдущей выборки, и у восходящего потока теперь есть ветвь с именем " frotz", fetch не сможет удалить " frotz/nitfol" с " git fetch --prune" из восходящего потока. git сообщит пользователю, что нужно использовать « git remote prune» для решения проблемы.
Измените способ " fetch --prune", перемещая операцию отсечения перед операцией извлечения. Таким образом, вместо предупреждения пользователя о конфликте, он автоматически исправляет его.
Ответы:
Вам нужно сделать следующее
Это обновит локальную базу данных удаленных филиалов.
источник
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/
Как примечание, параметр -p от
git fetch -p
фактически означает «обрезать».В любом случае, выбранные вами удаленные ветви будут удалены из вашего локального хранилища.
источник
Вам нужно сделать следующее
для того, чтобы синхронизировать ваш список филиалов. Руководство Git говорит
Мне лично нравится использовать,
git fetch origin -p --progress
потому что он показывает индикатор прогресса.источник
Это сработало для меня.
источник
Что касается
git fetch -p
его поведения, оно изменилось в Git 1.9, и только Git 2.9.x / 2.10 отражает это.Смотрите коммит 9e70233 (13 июня 2016 г.) Джеффа Кинга (
peff
) .(Слиты Junio C Hamano -
gitster
- в фиксации 1c22105 , 06 Jul 2016)Итак, в документации сейчас говорится:
Это потому:
источник