Guide

Version control your Ghost blog with git

By Axel Antas-Bergkvist Published May 24, 2026 Updated May 25, 2026

For developers, the absence of real version control in a CMS is a constant low-grade discomfort. You would never edit a codebase without git underneath you — every change tracked, every state recoverable, branches for risky work — and yet a Ghost blog, which can represent years of writing, usually has nothing of the sort. There are two ways to fix that with Specter: the hosted webapp gives you a snapshot and a diff behind every publish, and the desktop edition mirrors your posts to disk as files so git itself can do the rest.

Why anything beats Ghost’s revisions

Ghost does keep a short per-post edit history in its editor, but it is shallow by design: only the last several revisions, surfaced one post at a time, with no diffs and no whole-blog view. It was built to undo a single bad edit, not to give you a history you can reason about. What you want is the opposite — a view of what changed across the whole blog, and a recoverable state you didn’t have to remember to save.

The hosted version: a diff and a snapshot behind every publish

Specter connects to your Ghost blog in the browser and gives you most of what version control is for, without leaving the webapp. Before anything touches Ghost, you see a diff: every post that would change and exactly what would change in each — the whole blast radius of a bulk edit, in one place, the way git diff shows you a changeset. And every publish keeps a snapshot behind it, so reverting a post to an earlier state is a decision rather than a recovery project.

For most people running AI recipes across the archive, that’s the safety net they actually needed: review the diff, publish, and know there’s a snapshot to fall back to. Reviewing and reverting are free; only AI runs spend credits, and your workspace opens with 500 free. If you haven’t connected yet, start with the first-sync guide. Subscribe now →

The git version: mirror to disk, then git init

If you want git itself — committed states kept forever, line-level history you can git log through, branches for risky rewrites, the full toolset you trust on a codebase — then you want your posts as plain .md files on disk, where git already does everything you want. That’s the desktop and open-source edition: the same two-way sync, running on your Mac, landing every post as a file with its frontmatter intact. Once the archive is a folder, the workflow is the one you already know — git init, commit a baseline, commit before each edit, read the result with git diff, branch the risky work, and git checkout to roll back. The desktop guide walks through the exact commands.

Where this fits

Whichever version you use, it’s the foundation under several other things this site covers. It’s what makes a backup of your blog into a true safety net, it’s how you undo any change to a post, and it’s the seatbelt for every bulk AI edit you run. The discipline is always the same: review before you publish, with a recoverable state behind you. Ghost stays your publishing home; Specter finally gives your blog the history a codebase takes for granted.