Skip to content

Command reference

Gordon Heydon edited this page Aug 24, 2026 · 1 revision

Command reference

Every command works two ways, and since 2.0.0 both produce identical commits:

:GIT STATUS                      in a session (the verb)
$ udt-git status                 from the shell (the CLI)

The CLI is a drop-in for stock git — same subcommands, same flags, same argument order. -a <account> picks the account when you are not standing in it. Use udt-git, uv-git or mvx-git for your platform.

Commands

The verb takes commands in upper case; the CLI in lower, like git.

Command What it does
INIT create the record repository
ADD stage records (file {id})
  -A, --all — stage every changed record
  -o, --open — open (portable) format
RM unstage a record (file id)
IGNORE keep records out of history (pattern)
VERSION engine, libgit2 and its transports
STATUS show staged / changed records
COMMIT commit staged records (-m msg)
  -m, --message — commit message
LOG commit history
DIFF record changes ({file}); --staged for the index
  --staged — diff the index against HEAD
  --cached — the same, spelled git's older way
  -u, --unified — unified output, with hunk headers
SHOW committed content of a record (file id)
RESTORE restore records from HEAD (file)
BRANCH list or create a branch (name)
CHECKOUT switch branch, update records (name)
MERGE merge a branch into this one (name)
CHERRY-PICK apply one commit (commit)
CLONE clone a repo into a dir (url dir {ref})
FETCH fetch a remote ({remote})
PULL fetch + merge, re-materialising ({remote} {branch})
IMPORT re-materialise a file's records from HEAD (file)
PUSH push to a remote ({remote} {refspec})
REMOTE list or configure remotes ({add
CONFIG get or set repo config (key {value})
ATTR view or edit account / file attributes ({file})
  -s, --set — set a parameter (name=value)
  -u, --unset — remove a parameter (name)
  --sync — adopt the live file's geometry as an edit
  -e, --edit — full-screen editor
TAG list or manage tags (name {commit}

Everyday shapes

$ udt-git init                                  # create the repository
$ udt-git add -A                                # stage every changed record
$ udt-git commit -m "import the CLIENTS file"
$ udt-git status
$ udt-git log --oneline
:GIT INIT
:GIT ADD -A
:GIT COMMIT -m "import the CLIENTS file"
:GIT STATUS
:GIT LOG --ONELINE

Working with remotes

$ udt-git remote add origin https://github.com/you/your-account.git
$ udt-git push origin main
$ udt-git clone https://github.com/mvx-lang/demo.git mydemo
$ udt-git pull

clone builds a live account straight from the git objects — the portable form never lands on disk. pull re-materialises the records it brings down.

Open account format

Opt in per repository, the core.autocrlf analogue:

$ udt-git config mvx.openaccount true
$ udt-git clone --open-account <url>       # or --no-open-account to decline

clone asks rather than deciding silently. See Git structure of an account.

Account and file attributes

ATTR views and edits the account descriptor and a file's geometry:

$ udt-git attr                     # the account
$ udt-git attr CLIENTS             # one file
$ udt-git attr CLIENTS --sync      # adopt the live geometry as an edit
$ udt-git attr -s modulo=101 CLIENTS

Keeping records out of history

$ udt-git ignore 'WORKFILE/*'

Version and provenance

$ udt-git --version

reports the engine, libgit2 and its transports. A development build carries the short commit as well (2.0.0+g1234abc), so a bug report names the exact tree.

Clone this wiki locally