我想在不同的命名空间中创建标记。仔细阅读:https://git-scm.com/docs/gitnamespaces但我不确定,我理解正确。那么,我们说我创建了一个标签,并使用:git -c core.quotepath=false push -v origin refs/tags/20221208_144648
现在看到标签使用:git ls-remote --tags <repo_url.git> refs/tags/*
export GIT_NAMESPACE=foo
git -c core.quotepath=false push -v origin refs/tags/20221208_144648_TEST
或
git -c core.quotepath=false push -v origin refs/namespace/foo/tags/20221208_144648_TEST
我只看到我第一次创建的标签,当我运行:
git ls-remote --tags <repo_url.git> refs/tags/*
甚至尝试:
git ls-remote --tags <repo_url.git> refs/namespace/foo/tags/*
我显然在这里遗漏了一些东西。如有任何解释,将不胜感激。
根据下面的回答更新我的问题:
下面是我所尝试的:
创建一个没有标签的新仓库
$git ls-remote origin refs/tags/* $
创建标签:
git tag 20221208_144648_TEST -m messages
设置命名空间:
export GIT_NAMESPACE=foo
push ref
git -c core.quotepath=false push -v origin refs/tags/20221208_144648_TEST
列出参考文献
$git ls-remote origin refs/tags/* 362cb81e90fca03c73e0d3e5ea44883c6298a598 refs/tags/20221208_144648_TEST 538a4686d9dd17c1a7d770e718d21b95507393c1 refs/tags/20221208_144648_TEST^{}
取消命名空间
unset GIT_NAMESPACE
列出远程参考
git ls-remote origin refs/tags/* 362cb81e90fca03c73e0d3e5ea44883c6298a598 refs/tags/20221208_144648_TEST 538a4686d9dd17c1a7d770e718d21b95507393c1 refs/tags/20221208_144648_TEST^{}
注意:我还没有看到命名空间。
您在refs/namespaces
(不是refs/namespace
)中错过了s
,参考路径应该是refs/namespaces/foo/refs/tags/xxx
而不是refs/namesapces/foo/tags/xxx
(tags/
之前的refs/
被错过了),但两者都不是重点。
您可以使用任何一种方式(GIT_NAMESPACE
或refs/namespaces/
)来指定命名空间,但不能同时使用!
如果您导出GIT_NAMESPACE=foo
,然后将对象推入refs/namespaces/foo/refs/tags/
,那么它实际上将被推入refs/namespaces/foo/refs/namespaces/foo/refs/tags
,相当于命名空间foo/foo
。
实际上,我尝试了你的步骤,并得到了预期的结果。
步骤:
git tag 20221208_144648_TEST -m messages
export GIT_NAMESPACE=foo
git -c core.quotepath=false push -v origin refs/tags/20221208_144648_TEST
结果:
$ git ls-remote origin refs/tags/*
a750776e2ce551b597a87804424e95b90f26b391 refs/tags/20221208_144648_TEST
852d0196ca768d181bb027d0f37a0913b00bc7cf refs/tags/20221208_144648_TEST^{}
Afterunset GIT_NAMESPACE
:
$ git ls-remote origin refs/tags/*
a750776e2ce551b597a87804424e95b90f26b391 refs/namespaces/foo/refs/tags/20221208_144648_TEST
852d0196ca768d181bb027d0f37a0913b00bc7cf refs/namespaces/foo/refs/tags/20221208_144648_TEST^{}
您使用的是--tags
,所以它只在refs/tags/*
中搜索与模式匹配的refs。然而,模式是refs/namespace/foo/tags/*
。没有一个标签符合这个模式。用git ls-remote <repo_url.git> refs/namespace/foo/tags/*
代替。