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
alone, once combined with `base=master`). Recovery: the _head_ branch survives (only the base
421
+
branch was deleted) - preserve the closed PR's title/body, open a brand-new PR from the same
422
+
head branch against `master` directly (became #72), then resolve whatever real merge conflict
423
+
appears (git sees the parent's squash commit as unrelated history to what the child branch was
424
+
built on, even though the content is logically the same - expect at least one real conflict, not
425
+
a fast-forward). **Prevention, the actual fix**: retarget the child PR to `master` (`gh pr edit --base master` / a REST `PATCH .../pulls/N -f base=master`) BEFORE merging+deleting the parent's
426
+
branch, while the retarget API call still works normally - not after.
427
+
428
+
## Cross-session branch-name collisions on a "standing convention" name
429
+
430
+
Once a delivery pattern (e.g. "commit reports to a `report-relay` branch, relay the URL") gets
431
+
adopted as a _standing_ convention rather than a one-off, multiple independent sessions on this
432
+
box will reach for the exact same bare branch name for their own unrelated work - confirmed live:
433
+
a second, unrelated session pushed 5 more commits (upstream-ladder CI, federation-v1 doc updates)
434
+
on top of this session's own single report commit on a bare `report-relay` branch, with no
435
+
warning or conflict at push time (git branches don't lock; two sessions can both fast-forward the
436
+
same ref from their own local history without either one noticing the other's commits landed
437
+
first, as long as neither force-pushes). Confirmed via `git log <branch> --oneline`: the last
438
+
commit either session recognizes, followed by commits from a different narrative it never wrote.
439
+
**Fix**: every session's first relay push must use a branch name unique to that session, not the
440
+
convention's bare name - a numeric/date/session-id suffix, chosen so two concurrent sessions
441
+
adopting the same convention independently can't collide (a fixed default like a bare
442
+
`report-relay` is exactly the thing every session will reach for identically). The bare
443
+
`report-relay` name itself is now retired for this reason - always suffix.
0 commit comments