如何通过Github API更新它的原始分支

时间:2014-11-10 15:03:39

标签: github-api

我通过github API创建了一个github存储库的fork。现在,稍后,我想将原始存储库中的任何更新提取到fork中。在我的用例中,这应该始终是一个快进。我已经读取了对原始存储库的访问权限并对fork进行了读写操作。

我想过可能会创建一个Pull Request然后接受(这两个都可以通过API完成),但这会产生噪音(Pull Requests被创建和销毁)并且看起来似乎不对。

有没有办法通过API做到这一点?

3 个答案:

答案 0 :(得分:12)

我没有内幕消息,所以这可能是一个错过的功能,将在某些时候删除。在那之前:

Github提供所有提交(我假设)整个fork网络;因此,接受提交哈希的API将很乐意处理来自上游或其他分支的哈希(repos/commits/comparecreating a pull requst明确记录了此内容。)

因此,有两种方法只能通过API进行更新:

  1. 使用Git data api:如果您不更改fork的主人,这通常是最佳选择。

    1. 获取上游引用/repos/upstream/repo/git/refs/heads/master,并从中获取哈希值
    2. 使用相同的哈希值更新fork PATCH /repos/my/repo/git/refs/heads/master
  2. 使用更高级别的merge api:这将创建一个合并提交,有些人喜欢。

    1. 像以前一样获取上游参考
    2. 在您的仓库中创建合并到分支master
  3. 拉取请求给自己并通过api合并:这最终不仅会创建合并提交,还会创建PR。

    1. 使用/repos/your/repo/pulls
    2. 创建PR:head = "upstream:master"的POST
    3. 从回复中获取公关网址
    4. 合并:PUT到/repos/your/repo/pulls/number/merge
  4. “上游:主人”符号可能也适用于选项1& 2,保存API调用。

答案 1 :(得分:2)

目前不可能,但我已经将其添加到我们的API愿望清单中。 :)

答案 2 :(得分:0)

这对我有用,因为我需要从上游进行更新,但没有提交合并请求。我的裁判是master

  1. 创建拉取请求POST /repos/:myUsername/:myRepo/pulls
    • INPUT: {title, head: 'ownerFromUpStream:master', base: 'master', ...}
  2. 从拉取请求中获取sha(例如response.data.head.sha
  3. PATCH /repos/:myUsername/:myRepo/git/refs/master
    • PARAMS: {sha: shaFromPullRequest}

DOC。