rexxall95 downloadsBrowse a note's Git history, compare any two versions and restore one paragraph or the whole note with undo. Reads Git only and never commits for you.
No Git yet? Run See an example (no repository needed) from the command palette.
Needs Obsidian 1.13+ on desktop, Git installed, and a vault inside a Git repository. Costs nothing: no account, no network, no telemetry. It only reads Git and never commits for you.
+/- counts and milestones you name yourself (sent, submitted, confirmed). Pick a version, then Compare with current or Restore this version from the bar at the bottom.Lab tools (review inbox, work events, knowledge tracing, provenance lens, annotations, history health, knowledge-graph playback, historical sandboxes, history sources) sit behind Show lab tools in settings and are off by default. The full feature list, in Chinese, is in docs/FEATURES_zh.md.
| What the plugin does | What it never does |
|---|---|
Runs git log, git show, git diff, git status and similar read-only commands |
Commit, push, pull, fetch, checkout, reset, revert, stage, initialise a repository, or move HEAD |
| Writes to the working file only when you confirm a restore, after re-checking the file | Write anything to the repository on its own |
| Stores milestones, snapshots, undo history and settings in this vault's plugin data | Send anything over the network |
Network: none. Every Git call runs with GIT_NO_LAZY_FETCH=1 and GIT_OPTIONAL_LOCKS=0, so reading history never fetches from a remote or rewrites the index.
Files outside the vault: the repository may start in a folder above your vault; the plugin reads it with git. The lab tool historical sandboxes writes copies of an old vault state to a per-user application data folder (~/Library/Application Support/Git Note History on macOS, %LOCALAPPDATA%\Git Note History on Windows, ~/.local/share/git-note-history on Linux), only when you create a sandbox. Nothing else outside the vault is read or written.
The community directory's scorecard lists two warnings and two other items for this plugin. None of them touches the network.
| Scorecard item | Why it is needed | Where it is used |
|---|---|---|
Shell Execution (child_process) |
Git history lives in the repository, not in the vault, so the plugin starts the git program you set in the settings. It calls git directly with a list of arguments, never through a shell, so nothing in a note or file name can run as a command. |
Reading history (git log, show, diff, status, blame), and the lab tool historical sandboxes, which also runs git worktree to check out an old state. |
Direct Filesystem Access (fs) |
The vault API cannot see folders above the vault, where the repository may start. | Resolving the repository folder and checking that a moved repository still exists; and, only when you create a historical sandbox, writing and later removing its copy in the application data folder named above. |
Vault Enumeration (getMarkdownFiles) |
Restoring an old version can remove a heading or block that other notes link to. To warn you, the plugin looks through the link index Obsidian already keeps for every note. | The restore preview's link check, and the backlink counts in the Link impact view. Only links are read from Obsidian's cache, not note contents. |
| Clipboard Access | Copy buttons. The plugin only writes to the clipboard and never reads it. | Only when you click a copy button: a version link, a commit hash, a block or a whole version's text, a restore result, a file path, or a review pack. |
Git Note History reads history that already exists. To start one:
git init, then git add -A and git commit -m "First snapshot".The plugin itself never runs any of these commands for you.
The whole interface, lab tools included, follows Obsidian's language: Chinese, or English for every other language.
Colours, radii and spacing come from your theme's variables, and styles only apply inside the plugin's own views. Checked in light and dark mode with Default, Minimal, Blue Topaz and AnuPpuccin, including a narrow sidebar, the side-by-side diff (line numbers, horizontal space, long paths) and dropdowns. Reduce transparency and Reduce motion are respected.
git).git log --follow.npm ci
npm run check # type-check, build, official lint, tests
npm run package:release
TypeScript + esbuild, tested with Vitest and linted with the official eslint-plugin-obsidianmd rules. See CONTRIBUTING.md for checks and reporting issues, RELEASING.md for the release checklist and CHANGELOG.md for versions.
From 0.12.1 on, the release files carry a GitHub build attestation; check one with gh attestation verify main.js -R Rexxall/obsidian-git-history-view.
MIT License