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
我需要 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