You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: skills/git-workflow/references/pull-request-workflow.md
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -403,6 +403,22 @@ On `CLOSED / FIXED`, treat it as an ordinary already-fixed bot thread: reply wit
403
403
404
404
Observed 2026-07-30 on a `docker:S8544` finding: gate `OK`, 0 open issues, 0 failing checks, `mergeStateStatus: BLOCKED` on one stale thread — a merge that looked inexplicably stuck until the thread was read.
405
405
406
+
### `gh pr update-branch` re-writes the head UNSIGNED
407
+
408
+
Both forms (merge and `--rebase`) create the new commit server-side, signed by
409
+
nobody. In a repo that requires signed commits — including a requirement
410
+
living in **classic branch protection**, which neither the rulesets endpoint
411
+
nor a non-admin protection query can see — the PR then sits at
412
+
`mergeStateStatus: BLOCKED` with every visible gate green (observed on a PR
413
+
that reported request-review for an hour while the real blocker was the
414
+
signature). Rebase locally instead: signing is wired into git, so a plain
415
+
`git rebase origin/main` (or `git commit --amend --no-edit` when only the
416
+
signature is missing) re-signs, then push with `--force-with-lease`. Two
417
+
traps in that push: a checkout created from `FETCH_HEAD` has no lease
418
+
baseline and fails with `stale info` — pass the lease explicitly as
419
+
`--force-with-lease=<branch>:<remote-sha>`; and that remote SHA must be
420
+
**measured** (`git ls-remote origin <branch>`), never retyped from memory.
421
+
406
422
### Signature verification: the GitHub API is the source of truth, not your keyring
407
423
408
424
For "is this commit signed?" in a review, ask the API:
0 commit comments