Obsidian Git
Plugin that allows you to back up your Obsidian.md vault to a remote Git repository (e.g. private repo on GitHub).
Requirements, installation steps (including setup for mobile), tips and tricks, common issues and more can be found in the wiki.
For mobile users see Mobile section below.
Highlighted Features
- Automatic vault backup every X minutes
- Pull changes from remote repository on Obsidian startup
- Assign hotkeys for pulling/pushing changes to a remote repository
- Manage different repositories via Git submodules (after enabling this feature in settings)
- Sidebar view. The Source Control View allows you to stage and commit individual files. It can be opened with the
Open Source Control Viewcommand.
Available Commands
- Changes
List changed files: Lists all changes in a modalOpen diff view: Open diff view for the current fileStage current fileUnstage current file
- Commit
Commit all changes: Only commits all changes without pushingCommit all changes with specific message: Same as above, but with a custom messageCommit staged: Commits only files that have been stagedCommit staged with specific message: Same as above, but with a custom message
- Backup
Create Backup: Commits all changes. If "Push on backup" setting is enabled, will also push the commit.Create Backup with specific message: Same as above, but with a custom messageCreate backup and close: Same asCreate Backup, but if running on desktop, will close the Obsidian window. Will not exit Obsidian app on mobile.
- Remote
PushPullEdit remotesRemove remoteClone an existing remote repo: Opens dialog that will prompt for URL and authentication to clone a remote repoOpen file on GitHub: Open the file view of the current file on GitHub in a browser window. Note: only works on desktopOpen file history on GitHub: Open the file history of the current file on GitHub in a browser window. Note: only works on desktop
- Local
Initialize a new repoCreate new branchDelete branchCAUTION: Delete repository
- Source Control View
Open source control view: Opens side pane displaying Source control viewEdit .gitignoreAdd file to .gitignore: Add current file to .gitignore
Desktop
Authentication
Authentication may require additional setup. See more in the Authentication documentation
Obsidian on Linux
- ⚠ Snap is not supported.
- ⚠ Flatpak is not recommended, because it doesn't have access to all system files.
Please use AppImage instead (Linux installation guide)
Mobile
Restrictions of the mobile version
I am using isomorphic-git, which is a re-implementation of git in JavaScript, because you cannot use native git on Android or iOS.
- SSH authentication is not supported (isomorphic-git issue)
- Repo size is limited, because of memory restrictions
- Rebase merge strategy is not supported
- Submodules are not supported
Performance on mobile
Warning In cases where your device is low on RAM, Obsidian can crash on clone/pull. I don't know how to fix this. If that's the case for you, I have to admit this plugin won't work for you.
Setup: iPad Pro M1 with a repo of 3000 files reduced from 10000 markdown files
The initial clone took 0m25s. After that, the most time consuming part is to check the whole working directory for file changes. On this setup, checking all files for changes to stage takes 03m40s. Other commands like pull, push and commit are very fast (1-5 seconds).
The fastest way to work on mobile if you have a large repo/vault is to stage individual files and only commit staged files.
Contact
If you have any kind of feedback or questions, feel free to reach out via GitHub issues or @Vinadon on Obsidian Discord server.
This plugin was initial developed by denolehov. Since March 2021, it is Vinzent03 who is developing on this plugin.
If you want to support me (Vinzent03) you can support me on Ko-fi
