Dan142 downloadsReplace git submodules with plain nested git repos, ignored via .gitignore and tracked via folder-note frontmatter.
An Obsidian plugin that replaces git submodules with
plain nested git repos - discovered by scanning your vault's filesystem and
kept out of your vault's own git history by a self-maintaining pre-commit
hook, instead of .gitmodules.
Submodules are brittle, especially on mobile and when using Obsidian with iOS through terminal emulators such as iSH. This plugin avoids them entirely: nested repos are just ordinary git repositories living inside your vault, automatically found and ignored by the vault's own repo - no folder-naming convention, no frontmatter, no manual registration step.
.git entries, classifying each as an original clone, a git
worktree, or a real git submodule (read-only, sourced from
.gitmodules)..gitignore in sync automatically - no naming convention, no manual
.gitignore editing, ever.git init for the vault itself, if
it isn't a git repository yet.git worktree move and offers a one-click repair..gitmodules, including ones not yet initialized on disk..gitignore line, all in
one step. Nothing you'd already registered is lost.This plugin is desktop-only (isDesktopOnly: true), since it shells out
to your local git.
Manual installation: copy main.js, manifest.json, and styles.css
from a release into
<your-vault>/.obsidian/plugins/not-submodules/, then enable it in
Obsidian's Community plugins settings.
npm install
npm run dev # watch build
npm run build # type-check + production build
npm test # unit + integration tests (tsx --test)
MIT