Getting Started & Core Concepts

Welcome to MiniGit — a high-performance, Git-compatible distributed version control system designed for developers who value speed, simplicity, and zero-dependency reliability.

1. What is MiniGit?

MiniGit implements the foundational Git object model and porcelain command-line interface. It operates natively against standard Git-compatible storage and allows developers to manage snapshots, branch topologies, and collaboration workflows without third-party bloat.

Key Pillars

  • Zero Configuration: Ready out of the box with built-in porcelain commands.
  • Git Compatibility: Compatible with standard Git commit structures, trees, tags, and blobs.
  • Polyglot Ecosystem: Native SDK libraries for C++, C, Python, JavaScript/TypeScript, Go, Java, and Rust.
  • Isolated Deployment: Official standalone native executables and multi-stage Docker containers.

2. The Core Snapshotting Model

MiniGit organizes history through immutable directed acyclic graph (DAG) snapshots:

ComponentResponsibilityCommand Association
Working DirectoryYour active files on diskEdited directly in your editor
Staging Area (Index)Curated preparation zone for the next commit snapshotminigit add <file>
Commit History (HEAD)Cryptographically verified permanent snapshot recordsminigit commit -m "..."
Branch PointersMovable references to specific commitsminigit branch, minigit switch

3. Five-Minute Quickstart

Step 1: Initialize a Repository

Create a new version-controlled directory:

bash
mkdir my-project
cd my-project
minigit init

Step 2: Track and Snapshot Files

Create your initial code file and record your first commit:

bash
echo "# Hello MiniGit" > README.md
minigit status
minigit add README.md
minigit commit -m "Initial repository commit"

Step 3: Inspect Your History

Verify the record of your commit:

bash
minigit log
minigit show

Step 4: Branching and Isolation

Safely isolate experimental features:

bash
minigit switch -c feature/auth
echo "class Auth {}" > auth.py
minigit add auth.py
minigit commit -m "Add authentication module"
minigit switch main
minigit merge feature/auth

4. Next Learning Steps