如何获得与标签的实际代码关联的 SHA?

How do I get the SHA associated with the actual code for a tag?

我想获取与标签关联的实际代码的 SHA。这可能吗? API 提供的似乎是用于创建标签的 SHA,对我来说用处不大。

如果我访问

https://github.com/:owner/:repo/releases/tag/:tag
https://github.com/ramda/ramda/releases/tag/v0.12.0

我可以在 .tag-references li:eq(1) a 中找到用于构建标签的最新提交的 link。 (或者我假设它就是这样。)它的形式是

https://github.com/:owner/:repo/commit/:sha
https://github.com/ramda/ramda/commit/e2fad9bc6dd425a00dd98d2fb7ab1a9c52fce074

可以 提取此 SHA 并使用它来构建 link 从我的文档到源文件的文件(这就是全部内容。)但是涉及屏幕抓取。我更愿意使用 API.

但据我所知,API 通过以下调用为我提供了标签列表:

https://api.github.com/repos/:owner/:repo/git/refs/tags
https://api.github.com/repos/ramda/ramda/git/refs/tags

包括这样的条目:

{
  "ref": "refs/tags/v0.12.0",
  "url": "https://api.github.com/repos/ramda/ramda/git/refs/tags/v0.12.0",
  "object": {
    "sha": "c71639093b1a433fa68d4df2056be32a635a56d5",
    "type": "tag",
    "url": "https://api.github.com/repos/ramda/ramda/git/tags/c71639093b1a433fa68d4df2056be32a635a56d5"
  }
}

虽然我在解析响应以找到正确条目时没有问题,但生成的 SHA 似乎与我要引用的代码无关。

有没有什么方法可以通过 API 找到显示在标签页上的 SHA?

如果您转到 URL 标签对象 (https://api.github.com/repos/ramda/ramda/git/tags/c71639093b1a433fa68d4df2056be32a635a56d5) 包含在标签引用的 json 响应中,您会得到:

{
  "sha": "c71639093b1a433fa68d4df2056be32a635a56d5",
  "url": "https://api.github.com/repos/ramda/ramda/git/tags/c71639093b1a433fa68d4df2056be32a635a56d5",
  "tagger": {
    "name": "buzzdecafe",
    "email": "m_hur@yahoo.com",
    "date": "2015-03-21T22:25:46Z"
  },
  "object": {
    "sha": "e2fad9bc6dd425a00dd98d2fb7ab1a9c52fce074",
    "type": "commit",
    "url": "https://api.github.com/repos/ramda/ramda/git/commits/e2fad9bc6dd425a00dd98d2fb7ab1a9c52fce074"
  },
  "tag": "v0.12.0",
  "message": "Version 0.12.0\n"
}

它具有您要查找的提交对象的 SHA1 (e2fad9bc6dd425a00dd98d2fb7ab1a9c52fce074) 作为 object.sha

Git其实有两种标签:轻量标签和注释标签。轻量级的只是直接指向提交 sha 的引用。带注释的标签实际上是一个对象,它有自己的 sha,它有一个指向提交 sha 的指针。这是第二种标签的示例。 (有关更多详细信息,请参阅 man git-tag