Docs

Everyday work

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