ClaudiaFang708 downloadsSelectively sync individual notes with GitLab or GitHub. Push, pull, diff, and resolve conflicts — file by file, on mobile and desktop.
Selective, file-by-file sync between your vault and GitHub, GitLab, or Gitea.
Push, pull, diff, and resolve conflicts — file by file, not whole-vault. Unlike full-vault sync solutions, Git File Sync gives you granular control over exactly what leaves your device, so you can keep personal notes private while sharing project files through a real Git repository.
The Sync Status View gives a bird's-eye view of your vault, letting you selectively push, pull, or diff modified files.
A single dashboard shows the state of every tracked file:
The built-in diff viewer compares local and remote changes before you push or pull.
| Provider | Hosting | Min. version |
|---|---|---|
| github.com · GitHub Enterprise | — | |
| gitlab.com · self-hosted | GitLab 13.0+ | |
| self-hosted | Gitea 1.12+ |
Gitea note: the plugin talks to the Gitea API v1 (
/api/v1) and resolves branch names to commit SHAs before fetching the file tree, which is what makes 1.12+ the floor.
Pick a provider and supply its credentials in Settings > Git File Sync.
| Provider | Required info | Token scope | |
|---|---|---|---|
| GitHub | Personal access token, owner, repo name | repo |
|
| GitLab | Personal access token, project ID, base URL | api |
|
| Gitea | Personal access token, base URL, owner, repo name | (all) |
repo scope.api scope. Base URL defaults to https://gitlab.com; change it for self-hosted instances.https://gitea.example.com).Other settings: branch to sync against (default main), root path prefix inside the repo, vault folder to scope which notes are tracked, and symbolic link handling (real — recreate the link, GitHub only; follow — sync the target's content; skip). See Symbolic link handling for details.
Pushing:
Push current file to GitLab/GitHub/Gitea.Push to GitLab/GitHub/Gitea.Pulling:
Resolving a conflict:
On mobile: swipe from the left to open the ribbon and the Sync Status View, pull before you start editing, push when you're done.
main.js, manifest.json, and styles.css from the latest release.<vault>/.obsidian/plugins/git-file-sync/.Open sync status view from the Command Palette.Commands:
| Command | What it does |
|---|---|
| Open sync status view | Open the sync dashboard |
| Push current file to GitLab/GitHub/Gitea | Push the active note |
| Pull current file to GitLab/GitHub/Gitea | Pull the active note |
| Push all files | Push every tracked, changed file |
| Pull all files | Pull every tracked, changed file |
git clone https://github.com/firstsun-dev/git-files-sync.git
npm install
npm run dev # watch build
npm run build # type-check + production build
npm run test # vitest suite
npm run lint # eslint
MIT
Created by ClaudiaFang