Después incluso algo más de información:
MainRepo -> PublicBareRepo (with a lot of junk) -> The World
Así que el problema está aquí. De vez en cuando haces un push de MainRepo a PublicBareRepo, que ahora contiene cosas que ya no son válidas y no deberían estar allí. En el futuro, asegúrate de empujar solo las ramas que deberían estar allí.Creo que lo principal ahora es eliminar las ramas de ella, y entonces tengo que dar un paso atrás a mi primera respuesta (suponiendo que estamos hablando de la misma clase de basura)
git push PublicBareRepo :someBranch1
git push PublicBareRepo :someBranch2
Después de algo más de información del OP:
Parece que es el diseño del repositorio lo que está causando problemas y un --mirror es la manera de resolver esto. Si A es el repositorio básico principal al que los desarrolladores están llevando sus cosas, y si B es un repositorio público, entonces B debería ser un clon de A con la opción --mirror.
Lo que hay que hacer es hacer "actualización remota git" (suponiendo B ya es un espejo de A) en B por lo que se actualice a sí mismo volver a ser idéntica a A.
Respuesta original :
Si desea eliminar una rama en el repositorio remoto que puede hacer:
git push origin :branchName
lo mismo ocurre con cualquier ref realmente, por ejemplo, para una etiqueta:
git push origin :tagName
¿Qué pasa si hay dos docenas de sucursales antiguas? Parece que debería haber algún comando para esto ... '--mirror' es quizás el más cercano, pero hace demasiado. – Cascabel
El problema es que esas ramas no existen localmente. Además, simplemente editar el repositorio simple sería mucho más fácil que llamar a git push para cada una de las ramas obsoletas. Lo que estoy buscando es algo así como 'git remotes podar' que automatizaría la tarea. –
¿Empujamos las etiquetas? Como en no hay '--tags'? Y una vez que se eliminan las etiquetas, ¿por qué nos preocupamos por la limpieza? – manojlds