在查看 Git 标签并了解它们是如何传播的以及有多少解决方法可以修剪它们之后,我得出结论,最好的解决方法是更改refs/remotes/origin/
. 那么,为什么 refs 被refs/remotes/origin/
假定为分支?在远程引用下复制顶级结构也很容易:
refs/remotes/origin/heads/ <-- remote tracking branches
refs/remotes/origin/tags/ <-- remote tracking tags
refs/remotes/origin/notes/ <-- remote tracking notes
但是所有与 Git 一起工作的工具都假定 refs underrefs/remotes/origin/
是分支。
这是否有实际原因,或者仅仅是一个意外?
编辑1:
在对此进行了更多研究后,我发现它会在轻量级标签下git log --decorate
正确显示带注释refs/remotes/origin/tags/*
的标签,但会显示为分支。
配置文件:
[remote "origin"]
url = ssh://git@github.com/test/example.git
fetch = +refs/heads/*:refs/remotes/origin/heads/*
fetch = +refs/tags/*:refs/remotes/origin/tags/*
轻量级标签:
commit e447ca1e2f3c765072c6bd783981619da3d6a090 (tag: v0.2, origin/tags/v0.2)
Author: Joanna Blogs <joanna@blogs.com>
Date: Thu Aug 18 14:38:48 2016 -0500
Testing out a light weight tag
注释标签:
commit 334d587e8f9bad1756665384056760c0cb798f32 (tag: v0.1, tag: origin/tags/v0.1)
Author: Joe Blogs <joe@blogs.com>
Date: Fri Jul 1 09:24:25 2016 -0500
Testing an annotated tag
但是,正如预期的那样,该git tag -l
命令根本没有显示它们。