Git не удаляет (локальные) ветки удаленного отслеживания автоматически, если ветка была удалена в удаленном репозитории. Кроме того, до V2.0.1 ветки удаленного отслеживания в некоторых случаях не удалялись, когда вы удаляли пульт из конфигурации git (см. Ответ VonC).
Чтобы удалить устаревшие ветки удаленного отслеживания (ветки, которые были удалены в удаленном репозитории) для одного из ваших удаленных репозиториев, запустите
git remote prune <remote>
Чтобы процитировать страницу руководства или git remote:
чернослив
Удаляет все устаревшие ветки отслеживания в <name>. Эти устаревшие ветки уже были удалены из удаленного репозитория, на который ссылается <имя>, но они все еще локально доступны в «remotes / <имя>».
С параметром --dry-run сообщайте, какие ветви будут обрезаны, но не обрезайте их на самом деле.
Однако из вашего вопроса кажется, что вы удалили вручную .git/refs/remotes/theoldremote, поэтому Git больше не знает об удаленном репозитории, к которому принадлежали ветки удаленного отслеживания. Это не то, как вы должны это делать.
Обычный способ удалить удаленный репозиторий - запустить
git remote rm <remote>
Это удалит пульт из вашего .git/configи удалит ветки удаленного отслеживания.
Если вы просто удалите каталог .git/refs/remotes/, ветки останутся позади. Тогда вам нужно будет удалить их вручную:
git branch -rd <remote>/<branchname>
Вам нужна возможность -rудалить удаленную ветку.
git remote rmТеперь (git 2.0.1, июнь 2014 г.) сначала удалите ветки удаленного отслеживания. Это должно помочь избежать очистки старых веток. Смотрите мой ответ ниже