2010-12-08 16 views
11

¿Hay alguna manera práctica de hacer que mi repositorio local de git se olvide de las sucursales remotas que se han eliminado? git svn fetch no "vuelve a sincronizar todo" como esperaba. Mi repositorio local se configuró utilizando una importación del diseño estándar de repo de svn (git svn -s …).¿Cómo puedo hacer que git-svn elimine las sucursales remotas que ya no existen?

relacionada: Why does git remote not list anything on my git-svn repo?

+0

Mi primer pensamiento sería simplemente eliminar los archivos que representan esas ramas, que son solo pequeños archivos de texto en '.git/refs/remotos'. Pero probablemente haya una manera más correcta que eso, y estoy seguro de que sería posible complicar las cosas si hurgas en la carpeta '.git' sin saber realmente lo que estás haciendo. – MatrixFrog

+0

También querrá ver su archivo '.git/config' y eliminar cualquier mención de ellos allí. – MatrixFrog

Respuesta

0

En el primer pensamiento, sugeriría probar git remote prune. Extracto de documentation:

ciruela

Borra todos los rancios de seguimiento remoto ramas bajo. Estas ramas obsoletas ya se han eliminado desde el repositorio remoto al que se hace referencia por, pero todavía están localmente disponibles en "controles remotos /".

Con la opción --dry-run, informe qué ramas se podarán, pero no en realidad las podan.

Creo que esto también debería funcionar con un mando a distancia denominado svn ...

+1

no ... git-svn no almacena controles remotos de la manera estándar, y tampoco en una práctica abstracción de eso ... no hay controles remotos, 'git remote' no tiene salida. –

15

Puede eliminar huérfanos sucursales remotas mediante la ejecución de los comandos siguientes:

git branch -d -r my_branch 
rm -rf .git/svn/refs/remotes/my_branch 

para eliminar todas las ramas huérfanos a la vez en lugar de uno a la vez, vea la respuesta here.

+0

También tuve que hacer 'rm .git/refs/remotes/origin/my_branch' para que la rama no se muestre. Además, 'rm -rf .git/svn/refs/remotos/origin/my_branch /' en lugar de 'rm -rf .git/svn/refs/remotos/my_branch /' (tenga en cuenta el 'origen'). ¿Alguna idea de por qué? –

+0

Para contestar a mí mismo sobre la diferencia, probablemente utilicé '--prefix' cuando se clona, ​​que es el comportamiento predeterminado de 2,0 en adelante. –

Cuestiones relacionadas