jeff-stapleton2 downloadsAutomatically commit, push and pull your vault over git, like Obsidian Sync.
Keeps your vault in sync across devices through a git repository, the way Obsidian Sync does: it commits and pushes your edits shortly after you make them and pulls other devices' changes every 30 seconds. No buttons to press.
git (fast, full git behaviour).<<<<<<< markers you resolve in the note.With BRAT (recommended while this is unpublished): install the BRAT community plugin, run BRAT: Add a beta plugin, and enter this repository's GitHub URL. Do this on every device.
Manually: download main.js, manifest.json and styles.css from a release into
<vault>/.obsidian/plugins/git-sync/, then enable Auto Git Sync in Settings → Community plugins.
https://github.com/you/vault.git),
the branch, your token and a device name (used in commit messages).On your other devices, install the plugin and enter the same URL, branch and token.
Start with a fresh, empty vault (or one with only Obsidian's own settings). The plugin adopts everything from the repository. If the device already has its own notes and the repository has different notes with no shared history, you'll be asked before they are combined.
| Event | What happens |
|---|---|
| You edit a note | ~5 s after you stop typing (30 s at most during continuous typing), it commits and pushes |
| Every 30 s (60 s on mobile) | Checks the remote and pulls new changes |
| Obsidian opens, regains focus, or the network returns | Syncs right away |
| App goes to the background | Pushes pending edits immediately |
| Offline | Keeps committing locally, retries with growing delays, pushes when back online |
The status bar shows ✓ synced 12s ago, ⟳ syncing…, ☁✕ offline, ⏸ sync paused,
⚠ N conflict(s) or ⚠ sync error. Clicking it syncs, or opens the conflict list.
name.conflict-remote-<timestamp>.ext..obsidian/ (Obsidian settings): the remote version wins..obsidian/workspace.json, workspace-mobile.json, .obsidian/cache, .trash/, .DS_Store and this
plugin's own folder (.obsidian/plugins/git-sync) are added to .gitignore automatically. Files over 100 MB are never synced
(git hosts reject them, and one such file would make every push fail); you'll get a notice. Files over
25 MB (configurable) sync but produce a warning.
Sync now, Resolve conflicts, Show sync log (with a copy button for bug reports; tokens are redacted), Open repository in browser.
data.json in plain text; that file is git-ignored but is readable on disk..git/config. The built-in engine sends it as an Authorization header.Run Show sync log first. Common messages:
npm install
npm run dev # rebuilds main.js on change; symlink this folder into <vault>/.obsidian/plugins/git-sync
npm run build # type-check + production bundle
npm test # unit tests + engine contract tests against a local git HTTP server
The engine contract tests run the same scenarios against three setups: system git, the built-in engine on
Node's fs, and the built-in engine through the Obsidian file and network bridges. tests/mobile-compat.test.ts
loads the real bundle in a sandbox with no Node modules, Buffer or process and runs a two-device sync there.
Releasing: npm version patch (updates manifest.json and versions.json), then push the commit and the
tag; the Release workflow builds, tests and publishes main.js, manifest.json, styles.css.