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
3.7 KiB
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 ofgit branch+git commitgt submit --no-editinstead ofgit 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 stashwith Graphite - causes conflicts whengt modifyrestacks - Never use
gt checkout HEAD -- <file>after editing - silently restores unfixed version gt modify --no-editwith unstaged/untracked files stages ALL changesgt syncpulls FROM remote, doesn't push TO remotegt modifyrestacks children locally but doesn't push them- Always verify with
gt status -sbafter 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
- Stage changes:
gt add <files> - Create branch with commit:
gt create <branch-name> -m "message" - Push and create PR:
gt submit --no-edit - Add PR description using
.github/pull_request_template.mdformat:gh pr edit <pr-number> --body "..."
General Safety Checklist
- Always use
gtinstead ofgit - No uncommitted changes before switching branches
- Verify with
gt status -sbafter stack operations