Files
next.js/.cursor/commands/gt-workflow.md
Arian Tron 61f56f997c
Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
first commit
2026-03-10 19:37:31 +03:30

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