Git no elimina las ramas de seguimiento remoto (local) automáticamente si la rama se eliminó en el repositorio remoto. Además, antes de la V2.0.1, las ramas de seguimiento remoto en algunos casos no se eliminaban cuando eliminaba el control remoto de su configuración de git (consulte la respuesta de VonC).
Para eliminar ramas obsoletas de seguimiento remoto (ramas que se eliminaron en el repositorio remoto) para uno de sus repositorios remotos, ejecute
git remote prune <remote>
Para citar la página del manual o git remote:
ciruela pasa
Elimina todas las ramas de seguimiento obsoletas en <nombre>. Estas ramas obsoletas ya se han eliminado del repositorio remoto al que hace referencia <nombre>, pero todavía están disponibles localmente en "remotes / <nombre>".
Con la opción --dry-run, informe qué ramas se podarán, pero no las pode en realidad.
Sin embargo, a partir de su pregunta, parece que lo eliminó manualmente .git/refs/remotes/theoldremote, por lo que Git ya no sabe sobre el repositorio remoto al que pertenecían las ramas de seguimiento remoto. No es así como se supone que debes hacerlo.
La forma normal de eliminar un repositorio remoto es ejecutar
git remote rm <remote>
Esto eliminará el control remoto de su .git/configy eliminará las ramas de seguimiento remoto.
Si simplemente elimina el directorio debajo .git/refs/remotes/, las ramas permanecerán atrás. Luego, deberá eliminarlos manualmente:
git branch -rd <remote>/<branchname>
Necesita la opción -rde eliminar una rama remota.
git remote rmahora (git 2.0.1, junio de 2014) elimine primero las ramas de seguimiento remoto. Eso debería ayudar a evitar limpiar ramas viejas. Vea mi respuesta a continuación