Files
Tim NeutkensandGitHub d95b7bffba docs: improve Graphite workflow documentation (#89488)
### What?

Improves the Graphite workflow documentation in
`.cursor/commands/gt-workflow.md`.

### Why?

The previous documentation was unclear about when to use `gt` vs `git`
commands, leading to potential workflow issues.

### How?

- Clarifies that `gt` should be used for ALL git commands (not just
specific ones)
- Adds a critical section about staging changes BEFORE running `gt
create` to avoid creating empty branches
- Updates all `git` references to `gt` for consistency (`git show` → `gt
show`, `git status` → `gt status`, etc.)
- Improves the command reference table with `gt add`
- Reorganizes checklists for clarity

### Improving Documentation

- [x] Run `pnpm prettier-fix` to fix formatting issues before opening
the PR (handled by lint-staged)
2026-02-11 10:56:39 +01:00

3.7 KiB

Git Workflow with Graphite

Overview

Use Graphite (gt) instead of git for ALL branch and commit operations in this repository.

Use gt Instead of git

All git commands work with gt. Always use gt instead of git:

gt add <files>       # instead of git add
gt commit            # instead of git commit
gt status            # instead of git status
gt diff              # instead of git diff
# etc.

For branch/push operations, use the Graphite-specific commands:

  • gt create <branch-name> -m "message" instead of git branch + git commit
  • gt submit --no-edit instead of git push

Graphite Commands

Command Description
gt add <files> Stage files for commit
gt create <branch-name> -m "message" Create a new branch with commit
gt modify -a --no-edit Stage all and amend current branch's commit
gt checkout <branch> Switch branches
gt sync Sync and restack all branches
gt submit --no-edit Push and create/update PRs
gt log short View stack status

Creating a New Branch with Changes

CRITICAL: Always stage changes BEFORE running gt create. The command format is:

gt add <files>                               # Stage changes FIRST
gt create <branch-name> -m "commit message"  # Then create branch with commit

If you run gt create without staged changes, it creates an empty branch with no commit. Then gt modify -a --no-edit will fail because there's no commit to amend.

If you accidentally created an empty branch:

gt add <files>
gt commit -m "commit message"    # Create initial commit
gt submit --no-edit              # Then submit

Creating PRs with Descriptions

All PRs require a description. Use this workflow:

gt submit --no-edit
gh pr edit <pr-number> --body "Place description here"

Safety Rules

  • Graphite force-pushes everything - old commits only recoverable via reflog
  • Never have uncommitted changes when switching branches - they get lost during restack
  • Never use gt stash with Graphite - causes conflicts when gt modify restacks
  • Never use gt checkout HEAD -- <file> after editing - silently restores unfixed version
  • gt modify --no-edit with unstaged/untracked files stages ALL changes
  • gt sync pulls FROM remote, doesn't push TO remote
  • gt modify restacks children locally but doesn't push them
  • Always verify with gt status -sb after stack operations

Safe Multi-Branch Fix Workflow

gt checkout parent-branch
# make edits
gt modify -a --no-edit        # Stage all, amend, restack children
gt show HEAD -- <files>       # VERIFY fix is in commit
gt submit --no-edit           # Push immediately

gt checkout child-branch      # Already restacked from gt modify
# make edits
gt modify -a --no-edit
gt show HEAD -- <files>       # VERIFY
gt submit --no-edit

Checklist for Creating a PR

  1. Stage changes: gt add <files>
  2. Create branch with commit: gt create <branch-name> -m "message"
  3. Push and create PR: gt submit --no-edit
  4. Add PR description using .github/pull_request_template.md format: gh pr edit <pr-number> --body "..."

General Safety Checklist

  • Always use gt instead of git
  • No uncommitted changes before switching branches
  • Verify with gt status -sb after stack operations