【问题标题】:How to delete Github Tags not assigned to a release?如何删除未分配给发布的 Github 标签?
【发布时间】:2017-11-09 13:22:54
【问题描述】:

在我们的 GitHub 存储库中,我们有一组标签和一组分配给标签的版本。

现在我们要删除未分配给版本的标签。

知道如何使用 git 命令执行此操作吗?

感谢您的提示。

最好的问候

【问题讨论】:

    标签: git github github-api


    【解决方案1】:

    您可以使用 Github ref API & Github releases APIjq JSON parser 来:

    • 下载所有标签参考/git/refs/tags
    • 下载所有版本并提取标签名称
    • 从标签引用列表中删除发布标签
    • 准备好后删除标签

    脚本:

    REPO=remotestorage/remotestorage.js
    
    TAG_LIST=$(curl -s "https://api.github.com/repos/$REPO/git/refs/tags?per_page=100" | \
        jq '[ .[] | .ref ]')
    
    RELEASE_LIST=$(curl -s "https://api.github.com/repos/$REPO/releases?per_page=100" | \
        jq  '[ .[] | "refs/tags/" + .tag_name ]')
    
    NOT_IN_RELEASE=$(echo $TAG_LIST | jq --argjson releases "$RELEASE_LIST" '. - $releases' | jq -r '.[]')
    
    echo "$NOT_IN_RELEASE"
    
    # when you are ready
    # echo $NOT_IN_RELEASE | xargs git tag -d
    

    请注意,如果您有超过 100 个版本或标签,则必须traverse pagination


    使用 Github Graphql API v4,您可以将上述 2 个请求合并为一个请求。在the explorer

    {
      repository(owner: "remotestorage", name: "remotestorage.js") {
        releases(first: 100) {
          nodes {
            tag {
              name
            }
          }
        }
        refs(first: 100, refPrefix: "refs/tags/") {
          nodes {
            name
          }
        }
      }
    }
    

    脚本是:

    NOT_IN_RELEASE=$(curl -s -H "Authorization: bearer YOUR_ACCESS_TOKEN" -d '
     {
       "query": "query { repository(owner: \"remotestorage\", name: \"remotestorage.js\") { releases(first: 100) { nodes { tag { name } } } refs(first: 100, refPrefix: \"refs/tags/\") {nodes { name } } } }"
     }
    ' https://api.github.com/graphql | \
        jq -r '.data.repository | [.refs.nodes[].name] - [.releases.nodes[].tag.name] | .[]')
    
    echo "$NOT_IN_RELEASE"
    
    # when you are ready
    # echo $NOT_IN_RELEASE | xargs git tag -d
    

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 2017-09-06
      • 1970-01-01
      • 2021-01-04
      • 2021-07-10
      • 2022-01-03
      • 2022-11-15
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多