【问题标题】:sed/grep tag of a commit in gitgit 中提交的 sed/grep 标记
【发布时间】:2019-03-20 20:16:49
【问题描述】:

我需要 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 sed grep cut


    【解决方案1】:

    试试这个命令

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

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

    第一个命令输出:

    tag1
    tag2^{}
    

    第二个命令输出:

    tag1
    tag2
    

    【讨论】:

    • 我运行这个时没有看到任何输出
    • 你能分享一下你在执行这个命令时得到的输出是什么git ls-remote -t &lt;remote-project&gt;
    • 并分享您的预期结果。
    • 四个sha都不一样,怎么获取tag1和tag2呢?
    • 我的一些提交有 2 个或更多与之关联的标签。
    猜你喜欢
    • 2017-12-13
    • 1970-01-01
    • 2011-05-23
    • 2018-04-24
    • 2011-02-25
    • 2023-03-11
    • 2016-05-15
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多