The commands you'll use most, in the order you usually use them. All of these run inside a working folder you checked out.
#See what you've changed
grixel status # a summary: what changed, and whether you're behind the server
grixel diff # a line-by-line diff of your edits
For a side-by-side view in a graphical tool, use
grixel difftool.
#Save your work
grixel submit -m "describe what you did"
A submit is atomic — everything in it lands together. If Grixel tells
you that you're behind head, someone else submitted
since you last synced; run grixel sync first (below), then
submit again.
#Undo local edits
grixel revert path/to/file # discard your changes to one file
#Get the latest
grixel sync
This pulls in everyone else's submitted changes. It only downloads what actually changed, so syncing a small update to a big project is quick.
#When two people edited the same file
For text files, sync performs a three-way merge. If it
can't merge cleanly it leaves a conflict, which you resolve:
grixel resolve --mine path/to/file # keep your version
grixel resolve --theirs path/to/file # take the server's version
grixel mergetool # open a merge tool to combine them by hand
Then submit the result. (Binary files can't be merged — see Large files and locking for how to avoid colliding on them in the first place.)
#Look at history
grixel log # recent changes to the project you're in
grixel log -oneline # one line per commit (hash + summary)
grixel log -files # ...also listing each commit's changed files (A/M/D)
grixel log <ref> -path <file> # just the commits that touched one file
grixel cat <ref> <path> # print a file as it is on the server
Each commit line shows a short hash. Paste it back to inspect that commit.
Filter history by who and when:
grixel log -author alex # only Alex's commits (case-insensitive)
grixel log -since 2026-07-01 # commits on or after a date
grixel log -until 2026-07-15 # commits on or before a date
grixel log -author alex -since 2026-07-01 -files # combine them
Dates are YYYY-MM-DD (midnight UTC) or a full RFC3339
timestamp.
#What changed in a commit
grixel show is the "what did this commit change" view —
every file it touched, marked added (A), modified
(M), or deleted (D):
grixel show <commit> # file list for that commit
grixel show <commit> -u # ...with the line-by-line text diffs
grixel show <commit> -u src # ...only for files under src/
Run it inside a checkout and it uses that project's ref; elsewhere,
name the ref:
grixel show mystudio/games/mygame@<commit>.
#Diff between two commits
Inside a checkout, hand grixel diff two commit hashes to
see everything that changed between them — the file list by default,
patches with -u, and you can narrow to a subtree:
grixel diff <older> <newer> # files changed between the two commits
grixel diff <older> <newer> -u # ...with text diffs
grixel diff <older> <newer> art/ui # ...only under art/ui
The same works across two different branches with their depot paths
(a leading / tells grixel these are refs, not
commits):
grixel diff /mystudio/games/mygame /mystudio/games/mygame-dev
grixel diff -base /mystudio/games/main /mystudio/games/feature # only what feature added
Every form takes --json, so an assistant or script gets
the changed paths, kinds, and (with -u) the diff bodies as
structured data.
#Branching
Create a separate line of work and merge it back when it's ready:
grixel branch companies/acme/games/seasonal companies/acme/games/seasonal-dev
grixel checkout companies/acme/games/seasonal-dev ./dev
# ...work and submit on the branch...
grixel merge companies/acme/games/seasonal-dev # merge it into your current checkout
#Machine-readable output
Add --json to any command to get structured output
instead of text — useful for scripts:
grixel --json status