如何使用 github api 获取原始分叉存储库?

pou*_*sma 6 github github-api

我想知道如何从我的分叉存储库中获取原始存储库。

我正在使用https://api.github.com/users/:user/repos?type=forks获取分叉存储库列表。它返回分叉上的各种链接,但我找不到如何获取原始存储库。

任何的想法 ?

注意:其他循环 https://api.github.com/users/:user/events

tma*_*wen 5

您可以仅使用您提到的端点加载分叉存储库的列表:

curl https://api.github.com/users/:user/repos?type=forks
Run Code Online (Sandbox Code Playgroud)

这将返回类似于以下JSON提要的内容(省略了不相关的信息):

curl https://api.github.com/users/:user/repos?type=forks
Run Code Online (Sandbox Code Playgroud)

根据@jasonrudolph 建议编辑

然后,从返回的列表中,取出name元素键下的repo_name并使用它来构建存储库 url,或者仅引用url元素来发出 GET 请求,如下所示:

curl https://api.github.com/repos/:user/repo_name
Run Code Online (Sandbox Code Playgroud)

作为回报,它将为您提供请求的用户存储库信息(请注意,这是最简单的查询 url),您可以从中检索:

  • 保存存储库的 JSON元素,发布的存储库从中分叉,信息包括其 id / name / url ...
  • 保存原始存储库信息的 JSON元素,以防发布的存储库是另一个分支的分支。

类似于以下内容(这里的父级只是源,即存储库是从原始存储库分叉出来的):

[
  {
    "id": 24328834,
    "name": "repo_name",
    "full_name": ":user/repo_name",
    "owner": {
    }
    ...
    "url": "https://api.github.com/repos/:user/repo_name",
    ...
  }
  {
    "id": 24328835,
    "name": "repo_name_2",
    "full_name": ":user/repo_name_2",
    "owner": {
      ...
    }
    ...
    "url": "https://api.github.com/repos/:user/repo_name_2"
    ...
  }
]
Run Code Online (Sandbox Code Playgroud)

  • 要获取原始存储库,请使用源属性(而不是父属性)。父属性包含分叉的*直接*父代。请记住,存储库可能是一个叉子的叉子。在这种情况下,父存储库不是原始存储库。例如,给定一个是叉子的叉子的存储库,请注意父属性 (http://git.io/vehth) 和源属性 (http://git.io/vehqJ) 之间的区别。 (4认同)