Skip to content

gh pr merge --squash --delete-branch: dependent PR closed instead of auto-retargeted to merged PR's base #14223

Description

@favilo

What happened

A stacked-PR setup: PR #8 (feat/fix → base feat/base), where feat/base
was the head of open PR #7 (feat/basemain). The stack was assembled
with gh stack init --adopt — PR #7 predated the stack and was adopted as
the trunk when the descendant PR was created via gh stack submit. Both were
otherwise ordinary PRs with an ordinary base relationship.

I then ran: gh pr merge 7 --squash --delete-branch

Per the docs, deleting a merged PR's head branch should retarget open PRs
based on it to the merged PR's base branch. Instead, PR #8 was closed.

Timeline evidence (gh api repos/OWNER/REPO/issues/8/timeline):

Recovery was a dead end

  • gh pr edit 8 --base main on the closed PR: "Cannot change the base branch
    of a closed pull request."
  • gh pr reopen 8: refused while the base branch was deleted (expected), but
    also refused after restoring the base branch, because the head branch
    had been rebased/pushed while the PR was closed. Catch-22: the PR had to be
    abandoned and recreated as a new PR, losing its identity.

Questions

  1. Is auto-retarget on branch deletion only wired to the web UI's post-merge
    "delete branch" flow, and not to a raw ref deletion via the REST API
    (which is what --delete-branch performs)?
  2. If so, should gh pr merge --delete-branch warn when open PRs are based
    on the branch being deleted?

(If this is platform-side rather than CLI-side, happy to have it routed.)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedbugSomething isn't workinggh-prrelating to the gh pr commandplatformProblems with the GitHub platform rather than the CLI clientpriority-2Affects more than a few users but doesn't prevent core functions

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions