rosswang26 downloadsForce/incremental sync vault data to a configurable GitHub remote (git path configurable), skips >100MB files and continues; logs results to a viewable log.
An Obsidian plugin that syncs your entire vault to a GitHub repository using the system git. It pushes only what changed (incremental sync), can force-push when you need it, automatically skips files larger than 100 MB so a sync never gets stuck, and keeps a local log you can view anytime.
git add -A → commit → push. Only the delta since the last sync is uploaded.| Mode | Behavior |
|---|---|
| Incremental | Normal git push only; never overwrites the remote. |
| Auto | Normal push; --force-with-lease only when the remote is strictly behind local (e.g. you rewrote local history). Never overwrites diverged remote commits. |
| Force | Always git push --force-with-lease. |
.git/info/exclude so the rest of the sync continues..gitignore (.* + !/.gitignore) so .obsidian and other hidden files/folders are never tracked.sync.log (local only, never committed), viewable from the command palette or Settings.isDesktopOnly).git installed and reachable (from PATH, or set the full path in settings).git init in the vault once; the plugin then sets up origin for you.Not yet listed — the plugin is being submitted for review. Until it appears in the community directory, use manual install or BRAT below.
main.js, manifest.json, and styles.css from the latest release.<vault>/.obsidian/plugins/vault-force-sync/ and copy the three files into it.Add yanqingwang/vault-github-with-force as a beta plugin in BRAT.
https://github.com/user/vault-backup.git). Leave it empty to keep an existing origin.| Command | What it does |
|---|---|
| Sync vault to remote (incremental) | Commit + push using the configured sync mode. |
| Force push all data to remote | Commit + git push --force-with-lease. |
| Open sync log | View the last 300 lines of sync.log. |
<vault>/.gitignore — only if missing (.* / !/.gitignore).<vault>/.git/info/exclude — paths of oversized files (never committed).http.postBuffer, and http.proxy / https.proxy only if you configured a proxy.<vault>/.obsidian/plugins/vault-force-sync/sync.log — the sync log (.obsidian is gitignored).The plugin never modifies your notes' content — it only stages, commits, and pushes.
--force-with-lease (not --force) is always used for force pushes, so a remote that moved ahead unexpectedly will not be overwritten.| Setting | Default | Description |
|---|---|---|
| Remote URL | (empty) | Sync target, kept as git origin. Empty = keep existing origin. |
| Git location | (empty) | Full path to git. Empty = git from PATH. |
| Proxy | (empty) | HTTP(S) proxy for git, e.g. http://127.0.0.1:7890. Empty = no proxy. |
| Branch | main |
Remote branch to sync. |
| Sync mode | Incremental | See push modes above. |
| Max file size (MB) | 100 |
Larger files are skipped. GitHub hard limit is 100 MB. |
| Auto sync on load | off | Run one sync shortly after Obsidian starts. |
| Show success notice | on | Notice after each successful sync. |
| Enable logging | on | Write sync results to sync.log. |