Desde la página del manual:
Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".
Así que eliminé un montón de ramas usando
git push origin :staleStuff
y luego corrió
git remote prune origin
Sin embargo, solo se poda una rama local. Algunas de estas ramas fueron creadas por mí, otras por compañeros de trabajo. ¿Esto indica que no estaba rastreando esas ramas correctamente en primer lugar?
git
version-control
branch
git-branch
git-remote
Felixyz
fuente
fuente

git remote show originy el aspecto de las ramas marcadasstaleRespuestas:
Cuando lo usa
git push origin :staleStuff, se elimina automáticamenteorigin/staleStuff, por lo que cuando ejecutagit remote prune origin, ha podado alguna rama que alguien más eliminó. Es más probable que sus compañeros de trabajo ahora necesiten corrergit prunepara deshacerse de las ramas que ha eliminado.Entonces, ¿qué
git remote prunehace exactamente ? Idea principal: las ramas locales (no las ramas de seguimiento) no se tocan con elgit remote prunecomando y deben eliminarse manualmente.Ahora, un ejemplo del mundo real para una mejor comprensión:
Tiene un repositorio remoto con 2 ramas:
masteryfeature. Supongamos que está trabajando en ambas ramas, por lo que tiene estas referencias en su repositorio local (se dan los nombres de referencia completos para evitar confusiones):refs/heads/master(nombre cortomaster)refs/heads/feature(nombre cortofeature)refs/remotes/origin/master(nombre cortoorigin/master)refs/remotes/origin/feature(nombre cortoorigin/feature)Ahora, un escenario típico:
feature, lo fusionamastery elimina lafeaturerama del repositorio remoto.git fetch(ogit pull), no se eliminan referencias de su repositorio local, por lo que todavía tiene las 4 referencias.git remote prune origin.featurerama ya no existe, por lo querefs/remotes/origin/featurees una rama obsoleta que debe eliminarse.refs/heads/feature, porquegit remote pruneno elimina ningunarefs/heads/*referencia.Es posible identificar sucursales locales, asociadas con sucursales de seguimiento remoto, por
branch.<branch_name>.mergeparámetro de configuración. Este parámetro no es realmente necesario para que nada funcione (probablemente exceptogit pull), por lo que podría faltar.(actualizado con ejemplos e información útil de los comentarios)
fuente
git prune. Solo las ramas de adentro/refs/remotes/<remote_name>/están sujetas a poda; las ramas de/refs/heads/no se tocarán; debe administrarlas manualmente.branch.<branch_name>.mergeparámetro de configuración.