Si hay etiquetas en el repositorio remoto, generalmente las obtengo automáticamente al tirar. Cuando elimino la etiqueta local creada (git tag -d <tag-name>
) y la extraigo, la etiqueta eliminada se volverá a crear. Puedo eliminar ramas/etiquetas remotas (git push <remote-branch/tag-name>:<branch/tag-name>
), pero ¿cómo puedo detectar que la etiqueta local fue creada obteniendo una etiqueta remota?Git: distinguir entre etiquetas locales y remotas
Respuesta
Si está molesto por la recreación de estas etiquetas cuando ejecuta git pull
, desactive la búsqueda de etiquetas de forma predeterminada con la configuración de configuración remote.<remote-name>.tagopt. p.ej. Si la distancia es origin
, entonces usted puede hacer:
git config remote.origin.tagopt --no-tags
Actualización: hacer frente a su comentario, la razón por la que sugiero esto es que no hay una forma obvia de decir la diferencia entre una etiqueta que se creó localmente y uno que fue obtenido desde un control remoto. Tampoco hay reflog
para las etiquetas. Por lo tanto, mi sugerencia es suprimir la búsqueda automática de etiquetas; luego puede buscarlas en un espacio de nombres diferente. Por ejemplo, puede hacer:
git fetch origin +refs/tags/*:refs/tags/origin/*
... y quizás cree un alias para eso. Luego, cuando desee buscar etiquetas, recibirán un nombre, por ejemplo, refs/tags/origin/tag1
en lugar de refs/tags/tag1
.
Si desea que esto ocurra de forma automática, puede cambiar su .git/config
a enumerar varios refspecs para ir a buscar, por ejemplo .:
[remote "origin"]
url = [email protected]:whatever.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/tags/*:refs/tags/origin/*
... que es suggested in Pro Git.
No quiero desactivar la búsqueda de etiquetas, quiero detectar si una etiqueta disponible localmente fue creada por búsqueda o manualmente. – Mot
@mklhmnn: mi idea fue que puede suprimir la búsqueda automática de etiquetas y luego, cuando desee las etiquetas remotas, buscarlas en un espacio de nombres diferente. He actualizado mi respuesta con un ejemplo. –
@Mark: encuentro el enfoque mucho más directo que el mío, separando las etiquetas por espacio de nombres en fetch. Quisiera +1, pero ya lo hice antes de su edición;) – VonC
una etiqueta no es "local" o "remota": está asociada a una confirmación, que puede formar parte de varias ramas, incluidas las que se encuentran en el espacio de nombres de los controles remotos.
Get etiqueta SHA1 del commit referenciado por una etiqueta
git show -s 'TAG_NAME^{commit}' --format='%H'
, y hacer un:
git branch -a --contains SHA1
Si ve
remotes/aRemoteRepoName/aBranch
sabe que la etiqueta hace referencia a un compromiso has buscado desde un repositorio remoto.
Como Chris menciones:
git branch -a --contains TAGNAME
voluntad eliminar la referencia de la etiqueta y da la respuesta de una sola vez.
¿Por qué no todo en un solo comando: 'git branch -a --contiene 'TAG_NAME^{commit}'? –
Pensando en ello un poco más, '--contains' desreferenciará automáticamente el objeto nombrado, por lo que no es necesario especificar manualmente la desreferenciación. Simplemente 'git branch -a --contiene TAG_NAME' funciona como se esperaba. –
@Chris: buen punto, lo he incluido en la respuesta. – VonC
- 1. Distinguir cierre y variables locales
- 2. ¿Cómo sobrescribir las etiquetas locales con git fetch?
- 3. Git: rastrear múltiples ramas remotas?
- 4. Git pulling changes entre dos repositorios locales
- 5. Fusionando sucursales remotas en git
- 6. git rebase en actualizaciones remotas
- 7. ¿Cómo puedo distinguir entre gráficos y fotografías?
- 8. Git diff entre las dos etiquetas dadas
- 9. ¿Cómo puedo configurar Git para confirmaciones locales mientras uso P4 para confirmaciones remotas?
- 10. ¿Puedo mapear sucursales locales en sucursales remotas con diferentes prefijos en git?
- 11. ¿Deberían los HTTP ETags distinguir entre mayúsculas y minúsculas?
- 12. Pedido/sucursales remotas Lista de git-pitón
- 13. Reubicación de sucursales remotas en Git
- 14. Subversión y cambio entre etiquetas
- 15. Firefox y hojas de estilos XSL remotas
- 16. Gemfile: una mejor forma de declarar condicionalmente las gemas locales o remotas para múltiples desarrolladores
- 17. Distinguir entre la intranet y direcciones IP oficiales
- 18. iOS 6 - ¿Distinguir entre iPhone 5 y otros dispositivos?
- 19. Distinguir entre matriz y de hash en javascript con typeof()
- 20. QSplitter no se puede distinguir entre QWidget y QTabWidget
- 21. WCF: distinguir entre solicitudes RESTO y SOAP utilizando OperationContext
- 22. Distinguir entre un solo clic y doble clic en Java
- 23. Cómo distinguir entre una secuencia y un mapeo
- 24. ¿Cómo distinguir entre bind() en sys/sockets.h y std :: bind?
- 25. ¿Cómo distinguir entre colecciones NodeList activas y no vivas?
- 26. ¿Puedo usar UIPinchGestureRecognizers para distinguir entre pellizcos horizontales y verticales?
- 27. Sincronización (de relojes) entre dos computadoras remotas
- 28. Git: deshacer cambios locales; git add. + git rm?
- 29. ¿Existe una tecnología .NET para sincronizar bases de datos locales y remotas del servidor SQL?
- 30. Obtener lista de confirmaciones entre etiquetas en git
Si te encuentras en un lugar amigable, las etiquetas se anotarán, y las que hayas obtenido de otra parte generalmente tendrán autores que no eres tú. – Cascabel