Toolshed/Lore for Git users: a TLDR mapping

Lore for Git users: a TLDR mapping

TLDR

  • Lore is the open source (MIT) version control system from Epic Games, written in Rust. It is pre-1.0 (0.10.0 shipped on September 17, 2026) and moving fast, so commands, APIs and formats can still change.
  • Think of it as Git-like local ergonomics with a centralized, authoritative remote. You can commit, branch and diff offline. The remote decides the real state of every branch.
  • Binaries are first class. There is no LFS layer: text and binary files use the same content-addressed store (BLAKE3). Large files are split into chunks (content-defined FastCDC or fixed-size) and deduplicated.
  • Revisions are immutable. An existing revision is never edited in place. Operations that reshape history create new revisions and move the branch pointer.
  • Sparse working trees and lazy fetching are part of the core design, not an add-on.
diagram: Git with Git LFS uses separate storage for binaries, Lore uses one content-addressed storage model for code and binaries

Concept mapping

ConceptGit / Git LFSLore
Where the real history livesDistributed, many remotesCentralized, authoritative remote iCommit, branch and diff work offline. Push when you reconnect.
The remote can be several server processes, caches and replicas acting as one authority.Epic docs: remote, centralized with offline capability
Hidden folder with the local repo data.git/.lore/ iHolds local state, including the view file at .lore/view.Epic docs: view filter
File listing paths to never track.gitignore.loreignore iAn outbound filter: keeps paths out of staging and commits.
Only applies to new content, not files already tracked.Epic docs: ignore file, outbound filtering
How big binaries are handledGit LFS pointers + LFS serverNothing extra iBig files use the same store as code.
Lore is binary-first: all content is an opaque byte stream, with no line-ending or encoding guesses.Epic docs: binary-first, what binary-first means
How file content is storedWhole-file blobs, packfilesContent-addressed store, large files chunked iEvery byte lives in an immutable store keyed by BLAKE3 hash.
Files above a size threshold are split with FastCDC or fixed-size chunking.
With content-defined chunks, small edits to big files only upload the changed chunks.Epic docs: chunking, two chunking strategies
ID for one saved state of the repoCommit (SHA)Revision (content hash, or branch-qualified number) iA revision has an immutable, content-derived hash.
Within a branch it can also be addressed by a revision number such as main@42, or main@LATEST.
Use the full 64-character hash. Short hash prefixes are refused since 0.10.0.Epic docs: revision, revision identifier
Choosing what goes in the next commitIndex snapshots file contentStaging pins the path iStaging records the intent to include a path.
The commit captures the file contents at commit time, so later edits are included.Epic docs: stage, staging as recorded intent
Changing commits after they existRebase, amend, force pushNew revisions, never edits in place iRevisions are immutable. Rebase, cherry-pick and squash create new revisions and move the branch pointer.
The originals stay in storage.
Today the CLI exposes cherry-pick, revert and amend, but no rebase or squash command yet.Epic docs: rebase, cherry-pick and squash, immutable store, revision amend
Getting only part of a big repogit sparse-checkout, partial cloneView files and file dependencies iSparse is the default: only the paths you ask for land on disk.
Everything else is fetched lazily when needed.
File dependencies sync a file plus what it needs.Epic docs: sparse working tree, view filter, file dependency
Including another repo inside this oneSubmodulesLinks iA link points at a specific revision and subtree of another repo, mounted at a path.
It is recorded in the parent revision and has its own access control.
Exists in the data model and CLI (lore link), but Epic still lists the links and layers workflow as in progress.Epic docs: link, sub-repository links, roadmap
Workstation-only files over the repo(none)Layers iA local overlay of content from another repo, applied when files are written to disk.
Not versioned and never sent with clones.
Exists in the CLI (lore layer), but Epic still lists the links and layers workflow as in progress.Epic docs: layer, layers, roadmap
Claiming a binary so nobody else edits itgit lfs locklore lock acquire iA server-recorded, exclusive claim on a file. Lore stops two people taking the same lock.
The glossary and FAQ say the current implementation does not block a push without it.
The design doc describes server-enforced locks, and scalable locking is on the roadmap.Epic docs: lock, FAQ: file locking, design: locks, roadmap
Blocking direct pushes to key branchesBranch protection (on the host)lore branch protect iBuilt into the CLI instead of the hosting service.Epic docs: branch protect
Who can read or write whatRepo-level access on the hostPartitions iA partition is the access boundary in storage.
Knowing a content hash is not enough to read data outside your partition.
No built-in users or groups: identity comes from your own setup.Epic docs: partition, partitions

Command mapping

GitLore
git initlore repository create ilore repository create [url]
Creates a repository in the current directory. With --offline the argument is just the repo name.Epic docs: lore repository create
git clone <url>lore clone <url> ilore clone <url> [path]
Clones and materializes the working tree.
--view <file> sets a view filter, --branch picks a branch.Epic docs: lore clone, view filter
git statuslore status --scan ilore status [--scan]
Shows the staged revision and files marked dirty.
Without --scan it only reads dirty flags, so edits not yet marked (with lore dirty or a scan) do not show up.Epic docs: lore status
git add <path>lore stage <path> ilore stage <path> [--scan]
On a directory it only stages files already marked dirty.
Add --scan to find and stage changes in one pass.Epic docs: lore stage, stage
git restore --staged <path>lore file unstage <path> ilore file unstage <paths>
Removes paths from the stage. Your edits stay on disk.Epic docs: lore file unstage
git restore <path>lore file reset <path> ilore file reset <paths> [--purge]
Discards local changes back to the current revision.
--purge also deletes untracked files.Epic docs: lore file reset
git commit -m "msg"lore commit "msg" ilore commit <MESSAGE>
The message is a plain argument, not -m.
Creates a local revision from the stage. Works offline.Epic docs: lore commit
git pushlore push ilore push [branch]
Sends local revisions to the remote and moves the branch.
--fast-forward-merge lets the server fast-forward if the branch moved.Epic docs: lore push
git pulllore sync ilore sync [revision]
Moves your working tree to a revision. Takes a full hash, main@42, main@LATEST or branch@hash.
Short hash prefixes are refused since 0.10.0.Epic docs: lore sync, revision identifier
git loglore revision history ilore revision history [LENGTH]
Lists revisions from the latest on the current branch.
--branch picks another branch.Epic docs: lore revision history
git log -- <path>lore file history <path> ilore file history <PATH> [LENGTH]
Lists the revisions that touched one file.Epic docs: lore file history
git show <sha>lore revision info <rev> ilore revision info [revision]
Shows details for one revision. --delta adds what changed.Epic docs: lore revision info
git diff a blore revision diff / lore file diff ilore revision diff <source> [--target <rev>]
Diffs two revisions (target defaults to the current one).
lore file diff <paths> diffs specific files.Epic docs: lore revision diff, lore file diff
git branchlore branch list ilore branch list [--archived]
Lists branches. --archived includes archived ones.Epic docs: lore branch list
git switch -c <name>lore branch create <name> then lore branch switch <name> ilore branch create <branch>
Creates a branch. Then lore branch switch <branch> to move onto it.
branch switch --dry-run previews the file changes.Epic docs: lore branch create, lore branch switch
git merge <branch>lore branch merge <branch> ilore branch merge <branch>
Merges another branch into your current one.
On conflicts use merge resolve, restart or abort.Epic docs: lore branch merge
(checkout target, merge, switch back)lore branch merge into <target> "msg" ilore branch merge into <target> <MESSAGE>
Merges your current branch into the target without switching to it. Needs a commit message.Epic docs: lore branch merge into
git cherry-picklore revision cherry-pick ilore revision cherry-pick <revision>
Applies one revision onto the currently synced revision.
Has resolve, restart and abort for conflicts.Epic docs: lore revision cherry-pick
git revertlore revision revert ilore revision revert <revision>
Creates a new revision that undoes the given one.Epic docs: lore revision revert
git lfs lock / unlocklore lock acquire / lore lock release ilore lock acquire <paths> / lore lock release <paths>
Takes or drops an exclusive claim on files.
--branch names the branch the lock is tied to. Locking is advisory today, and scalable, branch-aware enforcement is still being developed.Epic docs: lore lock acquire, lore lock release, lock, branch-aware locking
git lfs lockslore lock status / lore lock query ilore lock status [paths]
Shows locks on specific files.
lore lock query --owner <id> or --path searches locks by owner, branch or path.Epic docs: lore lock status, lore lock query
git gclore repository gc ilore repository gc
Runs a full garbage collection on the local store.Epic docs: lore repository gc
git fscklore repository verify ilore repository verify [--heal]
Checks local repository state for consistency. --heal tries to repair it.Epic docs: lore repository verify
git filter-repo (purge a file from history)No direct equivalent. lore file obliterate deletes the stored content but does not rewrite the revisions that point to it ilore file obliterate --path <PATH> (or --address)
Deletes the stored bytes but keeps their address.
Revisions that pointed to it stay valid and read back a clear absence.Epic docs: lore file obliterate, obliteration
git stashNo documented equivalent yet

Check lore <command> --help before relying on exact flags. The CLI reference is the source of truth.

Workflow side by side

diagram: Git add, commit, push compared to Lore stage, commit, push

What changes in your head

  • No question about who has the real repo. The remote is the authority. Your local commits are a draft until you push.
  • Stop fighting LFS. No .gitattributes tracking rules, no pointer files, no broken clones from forgetting to install LFS.
  • Revisions are immutable, just like Git commits. History-editing operations create new revisions and move branch pointers rather than modifying existing revisions in place.
  • Staging includes a path, it does not freeze the exact content. If you edit after staging, the commit gets the newer version.

Numbers: Anchorpoint benchmark, Lore 0.8.3

The Anchorpoint benchmark (Lore 0.8.3, Git 2.54 with LFS 3.7.1 on Gitea, UE 5.8 source: 392,559 files, 63.5 GB):

LoreGit LFS
Initial add + commit + push5.3 min1 h 6 min
Fresh clone1,221 s1,761 s
Server storage22 GB57 GB

One benchmark on one dataset, run on Lore 0.8.3. Lore has shipped several releases since, so treat it as a signal, not a verdict.

Sources

Connections0 linked

Graph View

▸Tagged with