由于仓库使用.gitignore管理忽略文件, 并且.gitignore文件本身参与了同步, 会出现一种比较危险的情况:

  • 你配置了.gitignore, 使得配置文件夹如.obsidian不参与git追踪
  • 当你想查看历史提交记录时, 你checkout切换了分支
  • 这时, 你会惊奇地发现, 你的配置文件没有了
  • 哪怕切换回main分支, 没有参与git追踪的所有文件都不会回来了.

Git 认为工作区只是 当前提交的快照副本。任何不在快照里的东西,它都会删得干干净净——除非你把该文件永久标记为“别碰我”(skip-worktree)或在另一个独立 worktree 查看历史。

下面是GPT给出的一篇未验证正确性的方案.


o3

给所有参与者的简单提醒 —— 什么时候会丢自定义配置,以及后果是什么。

场景会发生什么后果
A. 直接 git checkout <旧提交>(旧提交没有你的私有配置文件)Git 把工作区还原到旧状态本地自定义配置被删掉,下一次打开 Obsidian/IDE 全部重置
B. 直接 git checkout <旧提交>(旧提交曾经跟踪该文件,但后来被 .gitignoreGit 提示 _“必须先清理工作区”_强制清理后才能切换配置文件被覆盖 / 删除
C. 拉别人的分支并合并(对方误把配置文件加入提交)合并时出现冲突或自动覆盖你的配置被改动,可能启动报错
D. Clone 新仓库忘记拷贝模板本地根本没有配置文件插件和快捷键全部回到默认

简单规避方法

  1. 配置文件永不进 Git:放 .gitignore,仓库只留 config.example 供复制。
  2. 查看旧版本用 git worktree add:单独目录看历史,主目录不受影响。
  3. 主力开发者可给配置打 skip-worktree
    git update-index --skip-worktree .obsidian/config.json

这样切任何分支都不会动到你的文件。

记住:想看历史,不要在主工作区 checkout
真要切,先备份自己的配置。