Git存储标签的位置在哪里?我执行了以下命令:
$ git tag
v0.1.0
v0.10.0
v0.11.0
但是目录 .git/refs/tags
是空的。Git 把这些标签存储在哪里?
谢谢。
这些引用还可以被存储在.git/packed-refs
文件中。
git gc --aggressive --prune
后,我发现我之前创建的一个标签已经从 .git/refs/tags
中消失了,但出现在了 .git/packed-refs
中。请注意,.git/packed-refs
是一个文件,而不是一个目录,所以你必须使用 cat .git/packed-refs
命令来查看标签。 - Derek Mahargit gc
打包起来,永远不会被解压缩,因为它们永远不会改变。如果你想做除了满足好奇心以外的任何事情,最好的方法是通过git tag
或git for-each-ref [refs/tags]
来检查东西,而不是直接查看.git目录。 - Cascabelgit gc
打包的,但在“pack”点之间,git 会创建未打包的提交对象和未打包的标签。 - Derek Mahar虽然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$