Skip to content

22-2/Version-Control

 
 

Repository files navigation

GitHub Release Obsidian Downloads GitHub stars GitHub open issues GitHub closed issues GitHub last commit


Version Control for Obsidian

Not another Git wrapper. Not automatic backup. This is version control for your thoughts.

If you're a writer, a perfectionist, or someone who iterates through multiple drafts before finding the right words—this plugin was made for you. It's for those moments when you want to save something meaningful, not because a timer went off, but because you decided this version is worth keeping.


🎯 A Different Philosophy

Here's the thing: Git is amazing, but it wasn't designed for writers.

Git treats your entire vault (or folder) as a single branch—something like main or dev. That's perfect for code, but when you're writing, you don't want to version a folder. You want to version a note. A single piece of writing. A specific idea.

This plugin flips that model:

  • Git versions foldersThis plugin versions individual files
  • Git treats a vault as a branchThis plugin treats each note as its own repository
  • Git makes you leave the file to branchThis plugin lets you branch within the note

Think of it this way: you're writing a note about a complex idea. You want to explore two different angles—maybe a technical explanation vs. a philosophical one. With Git, you'd need to create separate files or switch branches. With this plugin, you branch your thoughts right there in the same note, each with its own independent history.


💡 Conscious Milestones, Not Passive Backups

This plugin is not about automatic, passive backups that run silently in the background. It's not trying to replace Obsidian's File Recovery or Git's commit history.

It's about intentionality.

You save a version when you decide it's worth saving. When you've reached a milestone. When you've captured something meaningful that you might want to return to later. It's manual, deliberate, and conscious—because that's how creative work evolves.

  • For perfectionists: Save each iteration as you refine your ideas, without cluttering your vault with "Copy of..." files.
  • For writers: Mark meaningful drafts ("First complete thought," "After research," "Final before rewrite") instead of generic timestamps.
  • For thinkers: Branch your ideas to explore different directions, then merge back what works.

This is the core philosophy of this plugin, and I won't change it. It's designed for people who want to be in control of their creative evolution.


🤝 Works With Git, Not Against It

Because this plugin operates at the file level (not the vault level), it plays perfectly alongside Git:

  • Use Git to manage your vault structure, sync across devices, and track large-scale changes
  • Use this plugin to manage the fine-grained evolution of individual notes, with meaningful milestones and experimental branches

No conflicts. No competition. Two complementary tools for different scales of version control.


📝 What This Plugin Supports

As of now, this plugin provides version control for:

  • Markdown files (.md) – Your notes, your writing, your ideas
  • Obsidian Bases (.base) – Yes, these too!
  • 🔜 Canvas files (.canvas) – Planned for future releases

Why Choose This Plugin?

This plugin is designed for writers, thinkers, and perfectionists who want a simple, intuitive, and robust way to manage the evolution of their notes. If you've ever found yourself creating multiple copies of a file just to explore a new idea, or wished you could go back to a previous version of a paragraph, this plugin is for you.

Key Advantages

  • Per-File Version Control: Unlike Git, which versions your entire vault, this plugin focuses on individual notes. This means you can track the history of a single piece of writing without the complexity of commits, branches, or repositories.
  • Simplicity and Intuition: If you find Git's learning curve steep or its features excessive for your needs, this plugin offers a straightforward alternative. It's designed to "just work" out of the box, with a clear and accessible interface.
  • Mobile-Friendly: Running a full Git client on mobile or tablets can be impractical. This plugin provides a reliable, self-contained versioning system that works seamlessly across all your devices, including mobile.
  • Intentional Over Automatic: You control when to save. No timers, no background processes, no surprises—just you deciding when a version is worth keeping.

The Interface

The plugin is designed to be intuitive and fit seamlessly with your Obsidian theme, whether you prefer light or dark mode.

Card View (Light) Card View (Dark)
Card View in Light Mode Card View in Dark Mode
List View (Light) List View (Dark)
List View in Light Mode List View in Dark Mode

What Can This Plugin Do For You?

Have you ever been editing a note, trying to perfect it, only to realize you've lost a great paragraph from an earlier draft? Or maybe you want to explore a different angle for your writing without creating a dozen "Copy of..." files?

This plugin solves that. It allows you to save "snapshots" of your notes at any point in time. Think of it like a manual save point in a video game, but for your thoughts. You can create as many versions as you need, give them names, write description (to explain the "why" behind any change), and easily jump back to any previous state.


Key Features

  • 💾 Save Snapshots: At any time, save the current state of your note as a new version. You can give it a custom name (e.g., "First Draft," "Added Research Links") for easy reference custom description to explain the "why" behind any change).

  • 👀 Preview & Restore: Quickly glance at the content of any old version without commitment. If you like what you see, restore it with a single click. Don't worry—the plugin automatically saves a backup of your current content before restoring!

  • 🔍 Advanced Comparison (Diff): See exactly what changed between any two versions. Go beyond standard line-by-line comparison with advanced modes like Word, Character, and JSON Diff to pinpoint every modification.

  • 🌿 Create Deviations (New Note): Want to turn an old version into a completely separate file? Create a "deviation" to start a brand-new note from any point in your history, perfect for major rewrites or spin-off ideas.

  • 🌳 Explore with Branches (Same Note): Need to try a different direction within the same file? Create a "branch" to work on parallel ideas. Each branch has its own independent history, so you can experiment freely without affecting your main draft.

  • ⚙️ Smart Cleanup: Keep your history tidy. Set a maximum number of versions per note, or automatically clean up versions older than a certain number of days.

  • 📤 Export Your History: Need to back up your work or use it elsewhere? Export the entire version history of a note to various formats, including Markdown, JSON, and plain text.

  • 💅 Flexible Interface: Choose between a detailed Card View that shows all actions at a glance, or a sleek, Compact List View for a more minimal look.


How is this different from Obsidian's File Recovery?

You might be thinking, "Doesn't Obsidian already have a File Recovery plugin?" And you're right! The built-in File Recovery is excellent and useful for most users. But I wanted more control, more features, and a more hands-on approach.

Honestly, as a very anxious person, I don't fully trust a process that happens in the background. I wanted to save a version when I want to, not at a set time interval. I wanted to see my version history right there in the sidebar, confirming my changes are saved, instead of having to open the file recovery modal via a command. (Yes, I'm a control freak, I like to be the one in control, any problem with that?) This plugin was born from that need for control and visibility.

Here's a quick breakdown:

  • Intentional vs. Automatic: This plugin is about manual, intentional snapshots. You decide the perfect moment to save a version and can give it a meaningful name like "Brainstorming complete" or "Final draft before rewrite." File Recovery works automatically, saving snapshots every few minutes, which is great for accidents but less useful for marking specific creative milestones.

  • Creative Workflow vs. Disaster Recovery: This plugin is designed for your creative workflow. Features like naming versions, creating new notes from old versions ("deviations"), and easily previewing content are built to help you iterate and explore ideas. File Recovery is a disaster recovery tool, designed to help you get back a file you accidentally deleted or overwrote.

  • Always-On UI vs. On-Demand Modal: Your note's history is always visible and accessible in the sidebar with this plugin. With File Recovery, you access it through settings or a command when you realize you need to restore something. It's not designed to be part of your constant workflow.

In simple terms:

  • Obsidian File Recovery: A fantastic, passive safety net for "oops" moments.
  • Version Control (This Plugin): An active, hands-on tool for perfectionists, writers, and anyone who wants to consciously manage the evolution of their ideas.

Data Storage and Persistence

Your data stays with you. All version history data is stored locally within your Obsidian vault in a hidden folder (specifically, a folder named .versiondb). Inside this folder, the data for each version is saved as standard Markdown (.md) files.

This structure ensures data persistence and privacy:

  • Local Storage: Your version history never leaves your vault or connects to an external service.
  • Data Stays: Your version history and all associated data will remain in your vault even if you uninstall or remove the plugin.
  • Accessible Format: Because it is stored as standard Markdown files, your data is always accessible and readable, even without the plugin.

Platform Support

  • Mobile (iOS & Android)
  • Desktop (Windows, macOS, Linux)

Download

To jump straight to the Version Control plugin in Obsidian, try this:

  • ​Click the URI: Copy and paste or click this link, which should launch the app: obsidian://show-plugin?id=version-control
  • Alternatively (Search): If the link doesn't work, go to your Obsidian Settings and search for 'Version-Control' in the Community Plugins list.

Final Thoughts

This plugin was born from my own workflow frustrations. As someone who constantly modifies and perfects the same note, creating many variations until I'm satisfied, I needed a solution that gave me control. Not automated backups running silently. Not vault-wide version tracking. Just simple, intentional milestones for my ideas.

If that resonates with you—if you're someone who wants to consciously manage how your thoughts evolve—then this plugin might be exactly what you need.


Made with ❤️ for writers, perfectionists, and conscious creators.

About

A local snapshot-based version control system for Obsidian that lets you save versions on demand, creating a clean, finite history for your notes only when you choose—not just automatic or scheduled saves.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 88.0%
  • CSS 10.3%
  • JavaScript 1.7%