wei/pull

FR: Merge method that rebases the fork's own commits onto upstream

Offen

#661 geöffnet am 29.07.2026

 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)JavaScript (720 Forks)batch import
enhancementgood first issuehelp wanted

Repository-Metriken

Stars
 (5.364 Sterne)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

Asked before in https://github.com/wei/pull/issues/163, https://github.com/wei/pull/issues/202 and https://github.com/wei/pull/issues/213, closed on the grounds that the API cannot do it.

My use case: maintain a default branch fork that contains main plus a few commits of my own, as in https://github.com/krlmlr/duckdb/ . Currently solved with a custom action and pruning .github/workflows because GitHub Actions can't push workflows.

A "reverse rebase" might be feasible with calls Pull already makes:

  1. PATCH /git/refs/heads/<base>-pull — temp branch at the upstream tip, force.
  2. POST /pulls — head <base>, base <base>-pull.
  3. PUT /pulls/{n}/merge with merge_method: "rebase" — replays the fork's own commits onto the upstream tip.
  4. PATCH /git/refs/heads/<base> with force: true — move the branch to the result.
  5. DELETE /git/refs/heads/<base>-pull.

Step 4 is what hardreset already does, so contents:write covers all of it, and the default branch needs no special handling. Conflicts surface as a 405 on step 3 and can take the existing conflictLabel path.

What do you think?

Contributor Guide