Cuando usa git push origin :staleStuff
, elimina automáticamente origin/staleStuff
, por lo que cuando ejecutó git remote prune origin
, ha borrado alguna rama que fue eliminada por otra persona. Es más probable que sus compañeros de trabajo ahora necesiten ejecutar git prune
para deshacerse de las ramas que ha eliminado.
¿Qué exactamente git remote prune
hace? Idea principal: las ramas locales (que no rastrean las ramas) no se tocan con el comando git remote prune
y deben eliminarse manualmente.
Ahora, un ejemplo del mundo real para una mejor comprensión:
Usted tiene un repositorio remoto con 2 ramas: master
y feature
. Vamos a suponer que usted está trabajando en ambas ramas, por lo que como resultado usted tiene estas referencias en su repositorio local (se dan los nombres de referencia completo para evitar cualquier confusión):
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 la
feature
, se funde en master
y elimina feature
rama del repositorio remoto.
- De forma predeterminada, cuando hace
git fetch
(o git pull
), no se eliminan las referencias de su repositorio local, por lo que todavía tiene todas esas 4 referencias.
- Usted decide limpiarlos, y ejecutar
git remote prune origin
.
- git detectar que
feature
rama ya no existe, por lo refs/remotes/origin/feature
es una rancio rama que debe ser eliminado.
- Ahora tiene 3 referencias, incluyendo
refs/heads/feature
, porque git remote prune
no elimina ninguna referencia refs/heads/*
.
Es posible identificar las ramas locales, asociadas con las ramas de seguimiento remoto, mediante el parámetro de configuración branch.<branch_name>.merge
. Este parámetro no es realmente necesario para que funcione nada (probablemente, excepto git pull
), por lo que puede que falte.
(actualizado con el ejemplo & información útil a partir de los comentarios)
para averiguar lo que van a ser eliminado se puede hacer 'git show de origen controlado a distancia y buscar cualquier ramas marcadas ramas 'stale' –