2011-09-27 15 views
6

Si otros desarrolladores transfieren sus sucursales locales a un repositorio remoto compartido antes de comprometerse con el enlace troncal (para compartir, hacer copias de seguridad o almacenarlas centralmente para acceder desde múltiples máquinas), ¿hay alguna manera de que pueda buscar mis propias sucursales o eliminar selectivamente las referencias locales a las sucursales remotas de otras personas? Si no, ¿hay alguna forma de mostrar solo un subconjunto de ramas remotas en gitk, para poder ver dónde están mis ramas en relación con mis ramas remotas, pero no tener el gráfico ocupado por las ramas remotas de los demás?Solo busca un subconjunto de ramas de git remotas o solo muestra un subconjunto de ellas en gitk

+0

espero que está bien que hice una ligera edición en su título, ya que una "distancia" en Git es un concepto distinto de una sucursal en un control remoto: tu pregunta es sobre este último, y el título fue un poco engañoso. –

+0

Hablar de 'trunk' en el contexto de Git es un poco raro, ¿no? – knittl

Respuesta

5

Ésta es una forma de ir a buscar solamente determinadas ramas de un mando a distancia:

Los árbitros (incluyendo ramas) que se recuperan de un mando a distancia son controladas con la opción de configuración remote.<remote-name>.fetch. Por ejemplo, su remote.origin.fetch es probablemente el refspec:

+refs/heads/*:refs/remotes/origin/* 

... lo que significa hacer sacar los nombres de todos los árbitros bajo refs/heads/ en el repositorio remoto, y ponerlos a disposición en virtud de refs/remotes/origin/ en su repositorio local. (El + significa realizar actualizaciones forzadas, por lo que sus ramas de rastreo remoto se pueden actualizar incluso si la actualización no fuera un avance rápido)

En su lugar, puede enumerar varias referencias que especifiquen ramas concretas a buscar, p. cambiar esto con:

git config remote.origin.fetch +refs/heads/master:refs/remotes/origin/master 
git config --add remote.origin.fetch +refs/heads/blah:refs/remotes/origin/blah 

... y entonces la próxima vez solamente master y blah será descabellada.

Por supuesto, usted ya tiene localmente muchas sucursales de rastreo remoto, y gitk seguirá mostrándolas. Se puede quitar cada uno de los que usted no está interesado en con:

git branch -r -d origin/uninteresting 
+0

En lugar de eliminar cada rama de seguimiento remota por separado, debería poder hacer 'git remote prune origin', que creo que tomará fetchspecs en consideración – knittl

+0

@knittl: La documentación no sugiere eso, y acabo de probar eso en git 1.7.0.4, con 'remote.origin.fetch = + refs/heads/master: refs/remotes/origin/master' y no parece eliminarlos ... –

+0

bien, asunción errónea de mi lado:) sería interesante si se considera comportamiento esperado – knittl

Cuestiones relacionadas