Stacked Pull Requests
Track, navigate, rebase, and submit dependent pull requests with the Trylle CLI.
A stack is a chain of pull requests in which one change depends on another. Trylle records a parent pull request for each child, then uses those relationships to show the stack in pull request lists and in the pull request sidebar.
A stack is relationship metadata
Tracking a parent does not change Git history, update a pull request's base, merge the stack, or automatically rebase descendants. Keep the branch history and the recorded parent relationship aligned yourself.
Build a stack
Create each child branch while its intended parent branch is checked out:
git switch feature/parent
try stack create feature/childCommit the child change, then push and open its pull request. stack submit
pushes the current HEAD to origin before creating a pull request against the
repository's default branch:
git add path/to/files
git commit -m "feat: add the dependent change"
try stack submitAdd --draft when the new pull request should begin as a draft. If the current
branch already has an open pull request, stack submit returns that pull request
instead of creating another one.
Record the parent
After both pull requests exist, explicitly track their relationship:
try stack track --pull CHILD_NUMBER --parent PARENT_NUMBER
try stack logstack track changes platform metadata; it does not rebase the child or change
the pull request's base branch. Clear an incorrect explicit relationship with
try stack track --pull CHILD_NUMBER --clear.
The dashboard may infer and save a parent immediately after it creates a pull
request whose base matches another open pull request's head branch. There is no
dashboard control for changing or clearing an existing parent, so use
try stack track for deliberate maintenance.
Navigate the chain
From a branch with an open pull request, move to the neighboring stack branch:
try stack prev
try stack nextprev checks out the recorded parent's head branch. next checks out a child
branch. If the target is missing locally, the CLI fetches it from origin.
Navigation fails when the current pull request has no relationship in that
direction.
Restack a branch
After its parent changes, rebase the current branch onto the parent pull request's head branch:
try stack restackWhen no stack parent is recorded, the command uses the pull request's base branch as the rebase target.
Restack runs Git rebase
Start with a clean working tree. A conflict leaves the repository in Git's normal rebase state; resolve and continue the rebase, or abort it deliberately, before running more stack commands.
Synchronize child metadata
Use sync when the children inferred from a pull request's head and base branch
relationships need their recorded parent metadata updated:
try stack sync --pull PARENT_NUMBERWithout --parent, the command clears the explicit parent on those inferred
children. Add --parent NEW_PARENT_NUMBER to point them to another pull
request. This is a platform metadata operation, not a Git pull, push, or rebase.
Inspect the stack with try stack log afterward and use stack track to correct
a specific child when needed.
Merge deliberately
The pull request list and detail sidebar visualize relationships, but Trylle does not automatically restack descendants or sequence merges. Before merging each pull request:
- Rebase or update its branch as needed.
- Re-run tests and required checks.
- Confirm reviews still satisfy branch protection.
- Merge the pull request, then update the next child.
See pull requests for checks and merge behavior, and everyday CLI workflows for the compact command sequence.