Git ne supprime pas automatiquement les branches (locales) de suivi à distance si la branche a été supprimée dans le dépôt distant. De plus, avant la version V2.0.1, les branches de suivi à distance n'étaient parfois pas supprimées lorsque vous supprimiez le dépôt distant de votre configuration git (voir la réponse de VonC).
Pour supprimer les branches de suivi à distance périmées (branches qui ont été supprimées dans le référentiel distant) pour l'un de vos référentiels distants, exécutez
git remote prune <remote>
Pour citer la page de manuel ou git remote
:
pruneau
Supprime toutes les branches de suivi périmées sous <nom>. Ces branches périmées ont déjà été supprimées du référentiel distant référencé par <nom>, mais sont toujours disponibles localement dans "remotes/<name>".
Avec l'option --dry-run, rapporte les branches qui seront élaguées, mais fait mais ne les élague pas réellement.
Cependant, d'après votre question, il semble que vous ayez supprimé manuellement .git/refs/remotes/theoldremote
Git ne connaît donc plus le référentiel distant auquel appartenaient les branches de suivi à distance. Ce n'est pas comme ça qu'il faut faire.
La manière normale de supprimer un référentiel distant est d'exécuter
git remote rm <remote>
Cela va retirer la télécommande de votre .git/config
et supprimera les branches de suivi à distance.
Si vous supprimez simplement le répertoire sous .git/refs/remotes/
les branches resteront derrière. Vous devrez alors les enlever manuellement :
git branch -rd <remote>/<branchname>
Vous avez besoin de l'option -r
pour supprimer une branche distante.