Cuando lo usa git push origin :staleStuff, se elimina automáticamente origin/staleStuff, por lo que cuando ejecuta git remote prune origin, ha podado alguna rama que alguien más eliminó. Es más probable que sus compañeros de trabajo ahora necesiten correr git 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 el git remote prunecomando y deben eliminarse manualmente.
Ahora, un ejemplo del mundo real para una mejor comprensión:
Tiene un repositorio remoto con 2 ramas: mastery feature. 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 corto master)
refs/heads/feature(nombre corto feature)
refs/remotes/origin/master(nombre corto origin/master)
refs/remotes/origin/feature(nombre corto origin/feature)
Ahora, un escenario típico:
- Algún otro desarrollador termina todo el trabajo en el
feature, lo fusiona mastery elimina la featurerama del repositorio remoto.
- De forma predeterminada, cuando lo hace
git fetch(o git pull), no se eliminan referencias de su repositorio local, por lo que todavía tiene las 4 referencias.
- Decides limpiarlos y correr
git remote prune origin.
- git detecta que la
featurerama ya no existe, por lo que refs/remotes/origin/featurees una rama obsoleta que debe eliminarse.
- Ahora tiene 3 referencias, incluidas
refs/heads/feature, porque git remote pruneno elimina ninguna refs/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 excepto git pull), por lo que podría faltar.
(actualizado con ejemplos e información útil de los comentarios)
git remote show originy el aspecto de las ramas marcadasstale