¿Cómo sobrescribir las etiquetas locales con git fetch? Quiero reemplazar las etiquetas locales con etiquetas remotas.¿Cómo sobrescribir las etiquetas locales con git fetch?
Respuesta
git fetch --tags
lo hará.
Desde el docs (descripción del parámetro --tags
):
La mayoría de las etiquetas se recuperan automáticamente como directores de las sucursales se descargan, pero las etiquetas que no señalen objetos accesible desde los directores de las sucursales que están siendo rastreado no será recuperado por este mecanismo. Este indicador permite descargar todas las etiquetas y sus objetos asociados. El comportamiento predeterminado para un control remoto se puede especificar con la configuración remote..tagopt.
Las etiquetas no se sobrescribirán, ya que están destinadas a ser inmutables. Si desea tener un objeto que sea (realista) cambiable, utilice un puntero de bifurcación o una referencia en su lugar. Eso te deja con: la etiqueta git -d tagname ... y luego volver a buscarla.
No estoy de acuerdo con su primera declaración. Esto distorsionaría el punto de usar un VCS ¿no cree? – lightonphiri
Git no fomenta la reescritura (ya compartida, remota) de la historia. Eso no derrota el punto de vista de un VCS, ¡que es mantener la historia! En la mayoría de los casos, es posible obligar a que sucedan tales cosas, pero puede causar bastantes problemas. –
git fetch --tags --all --prune
Esto le dirá explícitamente git a buscar, y al mismo tiempo, eliminar las etiquetas que ya no existen en el control remoto.
Esto no parece eliminar las etiquetas que siempre estuvieron presentes localmente. –
@MartijnHeemels, git no puede distinguir entre una etiqueta que nunca se insertó y una etiqueta que se eliminó del control remoto. –
En primer lugar, a diferencia de las sucursales, git no hace un seguimiento de las etiquetas remotas diferentes de las locales. Una vez que terminaron de obtener, son indistinguibles.
- hace actualizar la etiqueta local (a pesar de que el manual no dice)
git fetch --tags
- no actualiza la etiqueta local de
git fetch
git fetch --prune
git fetch --prune --force
Una etiqueta de actualización/sobreescritura se ve así:
From git:path/name
- [tag update] my_tag -> my_tag
Esto funciona para las etiquetas de peso ligero y anotados, incluso mezclados. Es decir: una etiqueta anotada puede sobrescribirse con una ligera y viceversa.
que utiliza git versión 2.7.4
nota: esto no borra las etiquetas que se eliminaron en el control remoto –
@CarlosHeuberger Su comentario sugiere que usted cree que hay una manera de hacerlo, pero no es así. De hecho, puede eliminar todas las etiquetas locales que no existen en el control remoto, pero que también borran las etiquetas _local que nunca estuvieron en el control remoto (por ejemplo, aún no se presionaron, o las etiquetas para fines exclusivamente locales). No hay forma de eliminar solo las etiquetas que se eliminaron en remote_. –
No estoy seguro de por qué cree que mi comentario sugiere que, ¡nunca escribí que haya una manera de hacerlo!?! Intenté complementar tu respuesta porque en ninguna parte indica que las etiquetas locales no se eliminan y que "actualiza la etiqueta local" podría interpretarse como una eliminación de una etiqueta que se eliminó en el control remoto. Creo que fue una declaración clara (sin sugerencias ocultas) ... pero mi inglés probablemente sea peor de lo que creo. –
- 1. Git: distinguir entre etiquetas locales y remotas
- 2. haga un git pull para sobrescribir cambios locales
- 3. git: cómo "consolidar" las confirmaciones locales
- 4. cómo sobrescribir con un git push, sobrescribir los cambios al servidor de git?
- 5. Git pull/fetch con diferencias refspec
- 6. ¿Cómo enumerar todas las etiquetas de Git?
- 7. git pull VS git fetch git rebase
- 8. cómo usar las etiquetas en GIT
- 9. Cómo forzar Lein DEP para re-fetch tarros locales/libs
- 10. git checkout combina automáticamente las modificaciones locales
- 11. Cómo previsualizar git-pull sin hacer fetch?
- 12. Git fetch/pull ha dejado de funcionar
- 13. ¿Cómo reemplazar los ganchos de git locales con versiones actualizadas con git init?
- 14. ¿Cómo arreglar el repositorio git roto por fetch git interrumpido?
- 15. Cómo enumerar las confirmaciones locales diferencia en git
- 16. git fetch vs. git fetch origin master tienen diferentes efectos en la rama de seguimiento
- 17. Git: ¿Cómo sobrescribir el cambio local?
- 18. Git pull necesita descartar archivos locales
- 19. EntityFramework cómo sobrescribir las propiedades
- 20. Git fetch/checkout sin crear control remoto?
- 21. Oauth: cómo probar con las URL locales?
- 22. ¿Las etiquetas de git también se presionan?
- 23. Git diff entre las dos etiquetas dadas
- 24. ¿Cómo reacciono a las nuevas etiquetas en git hooks?
- 25. Mantener conjunto de confirmaciones locales que trabajan con git-svn
- 26. EMPUJA todas las sucursales locales de GIT? ¿Mejores prácticas?
- 27. Cómo git svn fetch + rebase en una sola operación?
- 28. Git: deshacer cambios locales; git add. + git rm?
- 29. Cómo enumerar las etiquetas de Git no eliminadas
- 30. Git: ¿Qué significan los números reportados por `git fetch`?
Pero yo estoy preguntando cómo sobrescribir etiquetas locales existentes, porque fueron creados erróneamente – linquize
'git fetch --tags' será en la actualización de las etiquetas hecho de locales existentes, por ejemplo, si la etiqueta remota FOO se correlaciona con 1234567 y la etiqueta local con los mapas FOO con fedcba9, 'git fetch --tags' reemplazará a FOO con 1234567. – torek
Actualización: en las versiones más nuevas de git, esto ya no actualizará las etiquetas locales. Puede forzar la actualización en su lugar, con 'git fetch '+ refs/tags/*: refs/tags/*'' ('--force' también podría funcionar, pero no lo he probado). –
torek