Tengo algo de reescritura de la historia para hacer, por lo que me gustaría mantener mi árbol original intacto por el momento. Sin embargo, el árbol reescrito también debe copiar las etiquetas previamente utilizadas. ¿Hay alguna opción manual menos que, por ejemplo, anteponiendo nombres de etiqueta con el nombre de la rama?git: ¿Hay algo así como etiquetas por rama?
Respuesta
No, no hay nada como una etiqueta por rama en git. Todas las ramas y etiquetas son solo tipos de referencias en Git; una referencia es solo un nombre que apunta a una revisión particular en el historial de revisión. Por ejemplo, si usted tiene devel
y master
ramas y v1.0
y v2.0
etiquetas, las referencias se vería algo como esto:
refs/heads/devel -> * /\ * * <- refs/heads/master | | * * \/ * <- refs/tags/v2.0 | * | * <- refs/tags/v1.0 | *
Como se puede ver, no hay nada atado esas etiquetas a las ramas; de hecho, todas esas etiquetas están contenidas en las ramas master
y devel
. Al mirar dentro de su repositorio .git
, puede ver que realmente no hay más estructura para una etiqueta que eso; es solo un archivo que contiene un SHA-1 que hace referencia a una confirmación dentro de .git/refs
, o una línea en .git/packed-refs
(las etiquetas estarán frecuentemente en packed-refs
porque no cambian con frecuencia, mientras que las ramas generalmente serán archivos separados dentro de git/refs
).
Por lo tanto, si desea reescribir el historial y conservar las etiquetas antiguas, deberá volver a escribir los nombres de las etiquetas. Como lo señala Sehe, esto se hace usando git filter-branch --tag-name-filter
.
Puede namespace una etiqueta en un directorio llamado así por la rama que desea que la etiqueta (tipo de) pertenecen a, y no tiene que ser manual:
git-thisBranch() { git symbolic-ref --short HEAD; }
git-localTag() {
local name="$1"; shift;
git tag $(git-thisBranch)/"$name" "[email protected]";
}
- 1. ¿Hay algo así como indicadores en Lua?
- 2. ¿Hay algo así como "global ::" para VB.NET?
- 3. ¿Hay algo así como `last` for` map`?
- 4. ¿Hay algo así como Codecademy para Java
- 5. ¿Hay algo así como un modelo funcional?
- 6. ¿Hay algo así como find_if en Java?
- 7. ¿Hay algo así como bpython para Ruby?
- 8. ¿Hay algo así como AutoMapper para Scala?
- 9. ¿Hay algo así como Incanter para Haskell?
- 10. ¿Hay algo así como WMI para Linux?
- 11. Algo así como gitignore pero no git ignore
- 12. ¿Existe algo así como XML 2.0?
- 13. etiquetas lista contenida por una rama
- 14. ¿Hay algo así como memcached, pero para listas ordenadas?
- 15. ¿Hay algo así como TimeSpan en el desarrollo de Android?
- 16. ¿Hay algo así como sesión en la aplicación de Windows?
- 17. ¿Hay algo así como un bool nulo en vb.net
- 18. ¿Hay algo así como un carácter comodín en Java?
- 19. ¿Hay algo así como Eclipse Perspective en Visual Studio?
- 20. ¿Hay algo así como herencia de anotación en java?
- 21. ¿hay algo así como isset de php en javascript/jQuery?
- 22. ¿Hay algo así como auto para los métodos de clase?
- 23. ¿Hay algo así como ZenTest/Autotest para Java y JUnit
- 24. ¿Hay algo así como un selector jQuery relativo?
- 25. ¿Hay algo así como Restrictions.eq (verdadero, falso) en Criteria API?
- 26. ¿Hay algo así como linux ptrace syscall en Windows?
- 27. ¿Hay algo así como un flujo nulo en Ruby?
- 28. ¿Hay algo así como una clase interna en Java?
- 29. ¿Hay algo así como un desminificador de javascript (deobfuscator)?
- 30. D-Bus: ¿hay algo así como un "sniffer D-Bus"?
... que luego se hecho con 'git filter-branch ..... --tag-name-filter cat' – sehe
@sehe: gracias, eso me recuerda mejorar [este script] (http://stackoverflow.com/questions/4278264/git -split-history-of-some-files-into-a-separate-branch/4283970 # 4283970) –