2012-05-29 16 views
12

Actualmente estamos limpiando nuestro git repo en el trabajo debido a una cantidad ridícula de ramas y etiquetas que simplemente no son necesarias.¿Cómo se elimina una etiqueta de git y se propaga dicha eliminación a través de git pull a otros?

Hemos hecho la parte de ramas, pero la parte de etiquetas está resultando problemática.

Suprimimos las ramas en el control remoto, y le pedimos a nuestro equipo que hiciera un git pull --prune para eliminar dichas ramas en sus repositorios locales.

El problema es que no parece haber una manera de hacer esto con las etiquetas. Podemos eliminar la etiqueta de forma remota con bastante facilidad, pero no podemos hacer que ese cambio se propague a otros repositorios locales cuando hacemos un git pull, o gc, o remote prune.

¿Alguna idea sobre cómo hacer esto?

¿O simplemente tendremos que evitar que las personas usen git push --tags hasta que vuelvan a clonar el repositorio?

Respuesta

10

You can't. Las etiquetas eliminadas en el control remoto no se eliminarán localmente en pull/fetch/etc.

+0

Bolas. ¡Saludos! –

+1

@StephenMelrose, ya que parece estar en contacto con todas las personas interesadas, puede pedirles que borren todas las etiquetas y luego simplemente hagan 'git fetch --tags $ remote'. Por supuesto, esto supone que no tienen sus propias etiquetas locales (no empujadas), pero esto podría resolverse preparando un script que eliminaría todas las etiquetas "conocidas, globales" y luego pidiendo a todas las partes que ejecuten este script en sus repos locales – kostix

4

No creo que hay una manera fácil de eliminar las etiquetas con empuje, pero se puede instruir a su gente para borrar todas sus variables locales

for tag in $(git tag); do git tag -d ${tag}; done 

y luego ir a buscar a partir de recompra principal para sincronizar los que deben quedarse vivo.

No veo ningún motivo para insertar etiquetas de forma predeterminada, ya que las etiquetas en git son bastante indestructibles y, por lo general, solo se utilizan para lanzamientos como hitos importantes similares.

+0

Horriblemente raro, pero funciona. Debería pasar esto. Aclamaciones. –

+3

Hacky? Nah. Ni siquiera cerca. –

10

En las versiones anteriores de Git Esto parece funcionar bien: (. Pero esto ya no funciona como de Git versión 1.9.0 o posterior)

git fetch --tags --prune 

+0

no funcionó conmigo ... – Haris

0

Porque "git fetch --tags --prune "no funciona para mí puse la solución de che en un alias que funciona bien para mí:

# update tags 
ut = "!sh -c 'for tag in $(git tag); do git tag -d ${tag}; done; git fetch --tags'"