sed/grep git 中提交的标记

sed/grep tag of a commit in git

我需要 grep/sed 与 git 存储库中的提交关联的标签。

我试过这个命令:

git ls-remote -t <remote-project> | grep -E '<commit-sha>' | sed -e 's,.* -e refs/tags/,,' -e 's/\^{}//'

但我得到的是:

<commit-sha1> refs/tags/<tag1>
<commit-sha1> refs/tags/<tag2>

我只想获取 tag1 和 tag2,这样我就可以将它们分开并将其存储在变量中以供进一步使用。

我也试过:

git ls-remote -t <remote-project> | grep -E '<commit-id>' | sed -e 's,.* -e refs/tags/,,' -e 's/\^{}//' | cut -f 2

输出:

refs/tags/<tag1>
refs/tags/<tag2>

仍然不是我想要的,我认为这不是实现它的紧凑方式。

一次提交的预期输出:

tag1
tag2

编辑:

git ls-remote -t ssh://somerepo.git 

此命令为我提供了带有相关标签信息的提交列表。

输出:

b63862c999a160add6b7617b3deb40a399aaa0e7    refs/tags/tag1
b63862c999a160add6b7617b3deb40a399aaa0e7    refs/tags/tag2^{}
1a761add5189d037e4b713a000aa650c740f624e    refs/tags/tag3
a8723b64a0d70f7d92ad65d3535ea13a9d6cfc2b    refs/tags/tag4^{}

试试这个命令

git ls-remote -t ssh://somerepo.git | sed  -n '/b63862c999a160add6b7617b3deb40a399aaa0e7/{s/.*\///p}' 

git ls-remote -t ssh://somerepo.git | sed  -rn '/b63862c999a160add6b7617b3deb40a399aaa0e7/{s/.*\/([^^]+).*//p}'

第一个命令输出:

tag1
tag2^{}

第二个命令输出:

tag1
tag2