git 中的标签显然可以通过简单地删除它们然后重新标记来从一个提交移动到另一个提交。
例如:
git tag -m "Version 1.0" v1.0 abcd123
git push --tags
git tag -d v1.0
git tag -m "Corrected version 1.0" v1.0 1234abc
git push --tags
如何查看特定标签的完整历史记录? (换句话说,任何时候创建/删除具有该名称的标签,以及每个标签所指向的提交)
如何查看所有标签的完整历史记录?
它们也可以通过强制移动:
git tag -f ...
然后用力推。
如何查看特定标签的完整历史记录? (换句话说,任何时候创建/删除具有该名称的标签,以及每个标签所指向的提交)
一般来说,你不能。
如果标签被强制移动和强制推送,并且您保留标签的引用日志,则可以从标签的引用日志中检索以前的值,直到这些引用日志条目过期。但是,删除引用(任何引用)都会删除引用日志。
带注释的标签使用存储库中的对象(除了引用本身)。删除引用即删除only对带注释标签对象的外部标签名称引用。只要底层对象本身没有被移除,就可以通过ID来访问它。然而,作为一个未引用的对象,它受到通常的垃圾收集规则的约束。只有当一些额外的引用(通常是另一个带注释的标签的另一个标签名称)使原始带注释的标签对象可访问时,才保证它保留在存储库中。
(没有根本原因树对象不能指向标记对象,因此可以有一个提交对象指向保留旧带注释标记的树。但是 Git 不是为了执行此操作而构建的,并且没有工具为了构建这样的东西,并且有可能git fsck
会认为它们是错误的。因此,这更多的是一个理论练习:理论上可以通过特殊提交来保存和保留“旧标签”和“标签历史记录”,可能通过新的参考名称空间来指向,例如refs/tagarchive/
,如果至少编写了一个 Git 管道命令和多个脚本。当然,在有人写下这些之前,这一切都纯粹是猜测。目前还不清楚他们会怎样useful, 任何一个。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)