在git标记名称中添加"/"以创建分层/嵌套标记是否存在问题?

ccl*_*ark 12 git

我们在git存储库上创建了一个标签"2012/02/16".然后我们注意到在Source Tree中,2012和01被表示为文件夹,可以整齐地打开和关闭以显示和隐藏标签.嵌套的标签层次似乎是组织标签的好方法,而不是只有一个平面列表.

这样做有问题吗?

当我做一个git ls-remote时,我看到以下条目:

8430572c89362b875109628c33a18e782aa38488    refs/tags/2012/02/16
d247e38159c8c4998bf8b555edfd7ffe7b945255    refs/tags/2012/02/16^{}
Run Code Online (Sandbox Code Playgroud)

我不确定第二个标签末尾的^ {}字符是什么意思,我想确保我们偶然发现的这种行为不是我们在去利用它来清理我们之前不应该做的事情.标签.

我们在"未嵌套"标签上看不到^ {}个字符.

Fau*_*aux 12

如果您尝试创建与层次结构中的"目录"发生冲突的标记(由git用于存储标记冲突的目录直接引起),那么您将遇到的唯一问题是无用的错误消息:

% git tag foo/bar
% git tag foo
error: there are still refs under 'refs/tags/foo'
fatal: refs/tags/foo: cannot lock the ref
Run Code Online (Sandbox Code Playgroud)

这在实践中不太可能是一个问题,它通常在人们尝试做的时候出现:

v0.0.1/rc1
v0.0.1/rc2
v0.0.1/beta1
v0.0.1/beta2
Run Code Online (Sandbox Code Playgroud)

然后,尝试并标记v0.0.1,这将遇到上述问题.


min*_*ret 8

没问题,使用斜杠是标准做法,例如在"git-flow"学科中.您可以在手册页git-check-ref-format(1)中检查标记名称的语法规则:http: //schacon.github.com/git/git-check-ref-format.html

带括号的插入符是git试图告诉你的标签,而不是你输入的内容.您可以使用手册页gitrevisions(7)解释它:http://schacon.github.com/git/gitrevisions.html