Add .obsidian/plugin to git?

Things I have tried

I have my vault under version control in git, and I have the .obsidian directory in my .gitignore because the .obsidian/plugin directory is pretty big (around 50MB in my case).

I repeatedly misconfigured something in the settings, and always searched a long time, until I found the right setting again. So I want to put the .obsidian directory under version control, to see whats going on.

What I’m trying to do

I wonder what others put in their git repository, and if I need the .obsidian/plugin directory in git. Are the settings stored inside the directories for each plugin? Can someone recommend a best practise?

1 Like

Yeah, I absolutely put my settings in my repo. I definitely want the chance to roll back if things go wrong with my configuration. I always commit my notes and settings separately. (I really ought to learn how to automate that so they are separate and clean automatically. Submodules or some similar feature maybe?)

Yes, there should be one folder for each plugin.

The drawback that I discovered is, that having ALL settings in git becomes pretty noisy. These are the changes from navigating around and editing one or two files:

diff --git a/.obsidian/graph.json b/.obsidian/graph.json
index dd6c467..05e901b 100644
--- a/.obsidian/graph.json
+++ b/.obsidian/graph.json
@@ -1,6 +1,6 @@
 {
   "collapse-filter": false,
-  "search": "",
+  "search": "tag:#mytag",
   "showTags": true,
   "showAttachments": false,
   "hideUnresolved": false,
@@ -15,7 +15,7 @@
       }
     }
   ],
-  "collapse-display": false,
+  "collapse-display": true,
   "showArrow": true,
   "textFadeMultiplier": -0.8,
   "nodeSizeMultiplier": 1.1181091994382,
@@ -25,6 +25,6 @@
   "repelStrength": 10,
   "linkStrength": 1,
   "linkDistance": 250,
-  "scale": 0.24778056447135147,
+  "scale": 0.8981010036107051,
   "close": true
 }
\ No newline at end of file
diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json
index 49a12c1..1e4f91f 100644
--- a/.obsidian/plugins/recent-files-obsidian/data.json
+++ b/.obsidian/plugins/recent-files-obsidian/data.json
@@ -1,13 +1,33 @@
 {
   "recentFiles": [
-    {
-      "basename": "Tag-Page-Template",
-      "path": "Templates/Tag-Page-Template.md"
-    },
     {
       "basename": "foo",
       "path": "foo.md"
     },
+    {
+      "basename": "Download Feeds from API",
+      "path": "Download Feeds from API.md"
+    },
+    {
+      "basename": "My MOC",
+      "path": "My MOC.md"
+    },
+    {
+      "basename": "Rails 6.1 Upgrade",
+      "path": "Rails 6.1 Upgrade.md"
+    }
     {
       "basename": "Obsidian Playground",
       "path": "Obsidian Playground.md"
@@ -48,10 +68,6 @@
       "basename": "Mjam Gutschein Codes",
       "path": "Mjam Gutschein Codes.md"
     },
+    {
+      "basename": "Download Feeds from API",
+      "path": "Download Feeds from API.md"
+    },
     {
       "basename": "Docker Cheatsheet",
       "path": "Docker Cheatsheet.md"
@@ -80,10 +96,6 @@
       "basename": "Maintenance",
       "path": "Maintenance.md"
     }
   ],
   "omittedPaths": [],
diff --git a/.obsidian/workspace b/.obsidian/workspace
index fd52c98..ff222c0 100644
--- a/.obsidian/workspace
+++ b/.obsidian/workspace
@@ -3,18 +3,6 @@
     "id": "ce2a3177085669a3",
     "type": "split",
     "children": [
-      {
-        "id": "f7b68a0034936d5c",
-        "type": "leaf",
-        "state": {
-          "type": "markdown",
-          "state": {
-            "file": "Templates/Tag-Page-Template.md",
-            "mode": "source",
-            "source": false
-          }
-        }
-      },
       {
         "id": "28a51034d19da7ce",
         "type": "leaf",
@@ -53,7 +41,7 @@
             "state": {
               "type": "search",
               "state": {
-                "query": "foobar",
+                "query": "/tags: \\[(.*)[^,]\\s+(.*)\\]/",
                 "matchingCase": false,
                 "explainSearch": false,
                 "collapseAll": false,
@@ -62,7 +50,8 @@
               }
             }
           }
-        ]
+        ],
+        "currentTab": 1
       },
       {
         "id": "d4458dc7c4ae2262",
@@ -112,11 +101,11 @@
             "state": {
               "type": "localgraph",
               "state": {
-                "file": "Templates/Tag-Page-Template.md",
+                "file": "foo.md",
                 "options": {
-                  "collapse-filter": true,
+                  "collapse-filter": false,
                   "search": "",
-                  "localJumps": 1,
+                  "localJumps": 2,
                   "localBacklinks": true,
                   "localForelinks": true,
                   "localInterlinks": true,
@@ -135,8 +124,8 @@
                   "repelStrength": 10,
                   "linkStrength": 1,
                   "linkDistance": 250,
-                  "scale": 0.8055354578492258,
-                  "close": false
+                  "scale": 0.33575387040986104,
+                  "close": true
                 }
               }
             }
@@ -152,8 +141,7 @@
               }
             }
           }
-        ],
-        "currentTab": 1
+        ]
       },
       {
         "id": "644d0820d0c70f9b",
@@ -165,7 +153,7 @@
             "state": {
               "type": "outgoing-link",
               "state": {
-                "file": "Templates/Tag-Page-Template.md",
+                "file": "foo.md",
                 "linksCollapsed": false,
                 "unlinkedCollapsed": false
               }
@@ -177,7 +165,7 @@
             "state": {
               "type": "backlink",
               "state": {
-                "file": "Templates/Tag-Page-Template.md",
+                "file": "foo.md",
                 "collapseAll": false,
                 "extraContext": false,
                 "sortOrder": "alphabetical",
@@ -201,19 +189,19 @@
       }
     ],
     "direction": "horizontal",
-    "width": 331.5
+    "width": 580.5
   },
-  "active": "f7b68a0034936d5c",
+  "active": "28a51034d19da7ce",
   "lastOpenFiles": [
+    "Download Feeds from API.md",
     "test.md",
+    "My MOC.md",
+    "Rails 6.1 Upgrade.md",
+    "Statistics.md",
     "Templates/Tag-Page-Template.md",
     "Obsidian Playground.md",
     "-000 Home.md",
-    "orphaned files output.md",
-    "attachments/Recording 20220920191750.webm",
-    "-021 Projects MOC.md",
-    "ModelLoader.md",
+    "orphaned files output.md"
   ]
 }

Ideally, I could only keep track of changes that are “real settings”. I know this is hard to define, but I don’t care to keep changes of graph settings (like zoom, collapsing…) or list of recent files. But I DO want o keep track of configured hotkeys, settings pane, pane layout…

But I think keeping those apart is nearly impossible. Or do you have a better idea?

I’ve noticed that many plugins store their config in a data.json file. I’m not sure if this is some kind of standard that all plugins follow, but all of the plugins that I use seem to do this. So I just keep the data.json files.

I have the following in my .gitignore:

.obsidian/workspace
.obsidian/themes

# exclude plugins/ but keep the data.json files in order to sync plugin settings
.obsidian/plugins/*/*
!.obsidian/plugins/*/data.json
3 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.