Pode las twigs de origen que ya no existen en la stream ascendente

Estas twigs están en la parte superior

* master remotes/origin/HEAD -> origin/master remotes/origin/gh-pages remotes/origin/master remotes/origin/next remotes/origin/translation remotes/origin/v1.0.1 remotes/origin/videoConverter 

y estas son twigs en mi tenedor

 * master remotes/origin/HEAD -> origin/master remotes/origin/beta remotes/origin/dashboardNewContent remotes/origin/externalUrl remotes/origin/gh-pages remotes/origin/master remotes/origin/next remotes/origin/rc remotes/origin/rc-0.3.0 remotes/origin/release-candidate remotes/origin/streama-node remotes/origin/translation remotes/origin/v1.0.0 remotes/origin/videoConverter remotes/upstream/gh-pages remotes/upstream/master remotes/upstream/next remotes/upstream/translation remotes/upstream/v1.0.1 remotes/upstream/videoConverter 

El repository upstream se ha actualizado desde que lo bifurqué. No puedo encontrar una forma de eliminar las twigs de mi tenedor que ya no existen en la parte superior. Este tutorial de GitHub muestra cómo sincronizar el historial de compromisos.

¿Hay una solución directa a este problema?

Un truco es replace el origin dentro de su repository local (que hace reference a su fork) con la URL upstream :

 git remote rename origin ori git remote add origin $(git remote get-url upstream) 

Entonces, un solo command git fetch --prune eliminará localmente todas las twigs de seguimiento remotas obsoletas (los remotes/origin/xxx que no están en upstream , referencedos temporalmente por ' origin ')

Finalmente, puede, para cada remotes/ori/xxx branches, verificar si existen remotes/origin/xxx . Si no: git push --delete ori xxx .

Algo así como: (en bash)

 for f in $(git for-each-ref refs/remotes/ori --format '%(refname:short)' | sed 's,ori/,,') do; git rev-parse -q --verify refs/remotes/origin/$f >/dev/null || git push --delete ori ${f} done 

Ese script se puede poner en un git-cleanup (o cualquier nombre de git-xxx ), y se llama con git cleanup (o git xxx ). De esa forma, se ejecuta en su propio bash, incluso en Windows.

Para terminar:

 git remote remove origin git remote rename ori origin