我通常使用--prune
(实际为-p
)和git fetch
。几分钟前,我想从远程存储库中获取标签,我做了:
git fetch --prune --tags
然后 facepalm 当我看到:
x [deleted] (none) -> opengl
我的一个名为opengl
的本地标记已被删除,我看不到如何恢复它。 trick to restore deleted tags在我的情况下不起作用,因为标记是一个轻量级标记(只是一个引用,而不是标记对象)。
您是否看到了恢复标签的方法?
我使用git版本1.8.3.1。
答案 0 :(得分:2)
没有简单的方法,因为没有为标记创建的日志,但也许您可以在删除之前找到.git
目录的备份。标记将位于备份中的.git/refs/tags/opengl
或.git/packed-refs
中。抓住40个字符的SHA-1,你可以在当前的repo中重新创建它,假设提交没有被垃圾收集(参见下一段)。
如果标记指向未以其他方式引用的提交(以便它现在变得无法访问),git fsck
可以找到悬空提交。如果有多个悬空提交,您仍然需要选择正确的提交;如果从某个分支可以访问提交,则不会发现任何有用的内容。但是,如果 现在是悬挂提交,您可能希望尽快恢复标记,以防止git gc
垃圾收集它。