Skip to main content
Documentation

CLI Reference

Complete reference for all 60+ Dits commands covering core Git operations, creative workflows, enterprise features, and advanced version control for large binary assets.

Global Options

These options can be used with any command:

-v, --verbose       Increase output verbosity (use -vv for debug)
-q, --quiet         Suppress non-essential output
--no-color          Disable colored output
--json              Output in JSON format (for scripting)
-C <path>           Run as if dits was started in <path>
--config <key=val>  Override config value for this command
-h, --help          Show help for command
--version           Show dits version

Command Categories

Commands are organized into logical categories. Click on a category to see detailed documentation for each command.

Quick Reference Table

All commands at a glance. Use the category pages above for detailed documentation with examples and options.

CommandDescriptionCategoryStatus
initInitialize a new repository
Repository
stable
cloneClone a repository
Repository
stable
remoteManage remote repositories
Repository
stable
statusShow working tree status
Repository
stable
addAdd files to staging area
Files
stable
restoreRestore working tree files
Files
stable
diffShow changes between commits
Files
stable
commitRecord changes to the repository
History
stable
logShow commit history
History
stable
showShow various types of objects
History
stable
tagCreate, list, or delete tags
History
stable
branchList, create, or delete branches
Branches
stable
switchSwitch to a branch
Branches
stable
checkoutSwitch branches or restore files
Branches
stable
mergeMerge branches
Branches
stable
stashStash changes temporarily
Branches
stable
resetReset HEAD to a specific state
Branches
stable
rebaseRebase commits
Advanced Git
stable
cherry-pickApply specific commits
Advanced Git
stable
bisectBinary search for bugs
Advanced Git
stable
reflogShow reference logs
Advanced Git
stable
blameShow authorship by line
Advanced Git
stable
showShow various types of objects
Advanced Git
stable
grepSearch repository content
Advanced Git
stable
worktreeManage multiple worktrees
Advanced Git
stable
sparse-checkoutCheck out only specified paths
Advanced Git
stable
hooksManage Git hooks
Advanced Git
stable
archiveCreate archives
Advanced Git
stable
describeDescribe commits with tags
Advanced Git
stable
shortlogSummarize git log output
Advanced Git
stable
maintenanceRun maintenance tasks
Advanced Git
stable
completionsGenerate shell completions
Advanced Git
stable
pushPush changes to remote
Remotes
stable
pullFetch and integrate changes
Remotes
stable
fetchDownload objects and refs
Remotes
stable
syncBi-directional sync
Remotes
beta
lockLock files for exclusive editing
Locks
stable
unlockRelease file locks
Locks
stable
locksList active locks
Locks
stable
mountMount repository as VFS
VFS
stable
unmountUnmount virtual filesystem
VFS
stable
cache-statsShow VFS cache statistics
VFS
stable
inspectInspect MP4/MOV structure
Video
stable
inspect-fileInspect file dedup stats
Video
stable
segmentSegment video into chunks
Video
stable
assembleReassemble segmented video
Video
stable
roundtripTest MP4 deconstruct/reconstruct
Video
stable
video-initInitialize video timeline project
Video
stable
video-add-clipAdd clip to video timeline
Video
stable
video-showShow a video timeline
Video
stable
video-listList all video projects
Video
stable
proxy-generateGenerate proxy files for videos
Proxies
stable
proxy-statusShow proxy generation status
Proxies
stable
proxy-listList all generated proxies
Proxies
stable
proxy-deleteDelete generated proxies
Proxies
stable
meta-scanScan and extract file metadata
Metadata
stable
meta-showShow metadata for a file
Metadata
stable
meta-listList all stored metadata
Metadata
stable
dep-checkCheck project file dependencies
Dependencies
stable
dep-graphShow dependency graph
Dependencies
stable
dep-listList all project files
Dependencies
stable
freeze-initInitialize lifecycle tracking
Storage
stable
freeze-statusShow storage tier status
Storage
stable
freezeMove chunks to colder storage
Storage
stable
thawRestore chunks from cold storage
Storage
stable
freeze-policySet or view lifecycle policy
Storage
stable
encrypt-initInitialize repository encryption
Encryption
stable
encrypt-statusShow encryption status
Encryption
stable
loginLogin to unlock encryption keys
Encryption
stable
logoutLogout and clear cached keys
Encryption
stable
change-passwordChange encryption password
Encryption
stable
auditShow audit log
Audit
stable
audit-statsShow audit statistics
Audit
stable
audit-exportExport audit log to JSON
Audit
stable
gcRun garbage collection
Maintenance
stable
fsckVerify repository integrity
Maintenance
stable
repo-statsShow repository statistics
Maintenance
stable
configGet and set configuration
Maintenance
stable
telemetry enableEnable telemetry data collection
Telemetry
stable
telemetry disableDisable telemetry data collection
Telemetry
stable
telemetry statusShow current telemetry settings
Telemetry
stable

Environment Variables

Dits behavior can be customized through environment variables. These are useful for scripting, CI/CD pipelines, and advanced configuration.

VariableDescriptionExample
DITS_DIROverride .dits directory location/custom/path/.dits
DITS_WORK_TREEOverride working tree location/path/to/worktree
DITS_CACHE_DIROverride cache directory~/.cache/dits
DITS_CONFIG_GLOBALOverride global config path~/.config/dits/config
DITS_EDITOREditor for commit messagesvim
DITS_PAGERPager for outputless -R
DITS_TOKENAuthentication token for remotesdits_xxxxx
DITS_SERVERDefault server URLhttps://dits.example.com
DITS_DEBUGEnable debug output1
DITS_TRACEEnable trace logging1

Exit Codes

Dits uses standardized exit codes for scripting and automation. These codes help identify what type of error occurred.

CodeMeaningExample Scenario
0SuccessCommand completed successfully
1General errorUnspecified failure
2Command line usage errorInvalid arguments or options
3Authentication errorInvalid credentials or expired token
4Network errorConnection failed or timed out
5Repository errorNot a dits repository or corrupt data
6Lock conflictFile is locked by another user
7Merge conflictConflicting changes need resolution
128+Fatal errorSignal number + 128 (e.g., SIGKILL = 137)

Common Workflows

Initial Setup

# Configure your identity
dits config --global user.name "Your Name"
dits config --global user.email "you@example.com"

# Clone a repository
dits clone https://dits.example.com/team/project
cd project

# Or initialize a new one
dits init my-new-project
cd my-new-project

Daily Workflow

# Start day: get latest changes
dits pull

# Check what's changed
dits status

# Lock file before editing (for binary files)
dits lock footage/scene01.mov

# Work on your files...

# Stage and commit changes
dits add footage/scene01.mov
dits commit -m "Color grade scene 1"

# Push changes to remote
dits push

# Unlock when done
dits unlock footage/scene01.mov

Using Virtual Filesystem

# Mount repository as virtual drive
dits mount /mnt/project

# Files appear instantly, hydrate on-demand
ls /mnt/project/footage/

# Open files directly in NLE (streams on demand)
# Edit as normal - no full download required

# When done
dits unmount /mnt/project

Working with Video

# Inspect video structure
dits inspect footage/hero.mov

# Check deduplication stats
dits inspect-file footage/hero.mov

# Generate proxy files for offline editing
dits proxy-generate --resolution 1080p footage/

# Check proxy status
dits proxy-status

Related Topics