How to update a fork from it's original via the Github API

I don't have the inside scoop on this, so this might be a miss-feature that will be removed at some point. Until then:

Github makes available all commits across (I assume) the entire fork network; So APIs that accept commit hashes will be happy to work on hashes from the upstream, or across other forks (This is explicitly documented for repos/commits/compare and creating a pull requst).

So there are a couple of ways to update via APIs only:

  1. Using Git data api: This will usually be the best option, if you don't change your fork's master.

    1. Get upstream ref /repos/upstream/repo/git/refs/heads/master, and get the hash from it
    2. Update your fork PATCH /repos/my/repo/git/refs/heads/master with the same hash.
  2. Using a higher-level merge api: This will create a merge commit, which some people like.

    1. Get the upstream ref like before
    2. Create a merge to branch master in your repo.
  3. Pull-request to yourself and merge it via api: This will end up creating not only a merge commit, but a PR as well.

    1. Create PR: POST to /repos/your/repo/pulls with head = "upstream:master"
    2. Get the PR url from the response,
    3. Merge it: PUT to /repos/your/repo/pulls/number/merge

It's possible that the "upstream:master" notation would also work for options 1 & 2, saving an API call.


Not possible currently, but I've gone ahead and added that to our API wishlist. :)

Tags:

Github Api