Git商店标签在哪里?

0xA*_*xAX 19 tags git

Git商店标签在哪里?我执行:

$ git tag
v0.1.0
v0.10.0
v0.11.0
Run Code Online (Sandbox Code Playgroud)

但目录.git/refs/tags是空的.Git在哪里存储这些标签?

谢谢.

wno*_*ise 23

它们也可以存储在 .git/packed-refs

  • 是的你是对的。运行 git gc --aggressive --prune 后,我看到我之前创建的标签已从 .git/refs/tags 中消失,但出现在 .git/packed-refs 中。请注意,“.git/packed-refs”是一个文件,而不是目录,因此您必须“cat .git/packed-refs”才能查看标签。 (2认同)
  • 事实上,这是他们最终将被存储的唯一地方.它们被`git gc`包装好,从不拆包,因为它们永远不会改变.实际上,如果你想要做任何事情除了满足你的好奇心之外,检查事物的最好方法是通过`git tag`或`git for-each-ref [refs/tags]`,而不是直接查看. git目录. (2认同)

Der*_*har 7

虽然wnoise是正确的,当他 Git还在.git/packed-refs后续git gc操作中存储标签时,在"pack"点之间(意味着在git gc操作之间),Git创建解压缩的提交对象和解压缩的标签:

derek@derek-OptiPlex-960:~/Projects/test$ git tag
1
2
3
derek@derek-OptiPlex-960:~/Projects/test$ cat .git/packed-refs 
# pack-refs with: peeled 
55a87ab06897aca29285e58beb4e0de15af409fa refs/heads/master
89a6b171ee6d56bc3ce5a4cbd92c6a379594d974 refs/tags/1
55a87ab06897aca29285e58beb4e0de15af409fa refs/tags/2
derek@derek-OptiPlex-960:~/Projects/test$ ls .git/refs/tags
3
derek@derek-OptiPlex-960:~/Projects/test$
Run Code Online (Sandbox Code Playgroud)