TrylleDocs
Platform

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/child

Commit 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 submit

Add --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 log

stack 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.

From a branch with an open pull request, move to the neighboring stack branch:

try stack prev
try stack next

prev 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 restack

When 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_NUMBER

Without --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:

  1. Rebase or update its branch as needed.
  2. Re-run tests and required checks.
  3. Confirm reviews still satisfy branch protection.
  4. 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.

On this page