wei/pull

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

開放

#661 建立於 2026年7月29日

 (1 則留言) (0 個反應) (0 位負責人)JavaScript (720 個分叉)batch import
enhancementgood first issuehelp wanted

倉庫指標

星標
 (5,364 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

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?

貢獻者指南