◆

WebStorm 目录中 .git 文件夹不显示的解决方法

2023-07-20 12:260

解决方法

如图,如果列表中包含 .git 将 .git 移除即可

webstorm目录中.git文件夹没有显示

这个列表是什么

图里那个列表的完整路径是:

Settings → Editor → File Types → 页面最下方的 Ignored Files and Folders

它是一份用分号分隔的通配符列表,WebStorm 会把匹配上的文件和目录从整个 IDE 的视野里彻底剔除。默认值大致长这样:

*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;

可以看到 .git 本来就在默认值里,所以「WebStorm 里看不到 .git 目录」不是 bug,是出厂设置。想看到它,就把 .git; 这一段从列表里删掉,点 Apply,Project 面板会立刻刷新出来,不用重启。

「Ignored」和 gitignore、和 Excluded 的区别

这三个概念在 WebStorm 里经常被混为一谈,实际影响范围差别很大,搞清楚能省很多排查时间:

Ignored Files and Folders(本文这个) — IDE 级别的黑名单,作用于所有项目。被它匹配的路径在 IDE 眼里等于不存在:Project 面板看不到、Shift + Shift 搜不到、全局搜索(Cmd + Shift + F)不会扫、Cmd + O 也找不到。它是最彻底的一种隐藏。

Excluded(标记排除的目录) — 项目级别,右键目录选 Mark Directory as → Excluded。被排除的目录在 Project 面板里还能看到(显示成橙色),但不建索引、不参与代码补全和查找引用。这是处理 node_modules、dist、build 的正确方式。

.gitignore — 跟 IDE 无关,只影响 git 是否追踪。WebStorm 会读它并把匹配的文件在 Project 面板里标成灰色/黄褐色,但文件照样能看能搜能编辑。

对应关系可以这么记:.gitignore 管「git 要不要提交」,Excluded 管「IDE 要不要建索引」,Ignored Files 管「IDE 要不要显示」。

什么时候真的需要看到 .git 目录

平时确实不需要,但有几个场景绕不开:

清理 git 的锁文件。git 命令被强杀之后可能留下 .git/index.lock,之后任何 git 操作都报 Unable to create '.git/index.lock': File exists。解决办法是删掉这个文件,确认没有 git 进程在跑之后:

# 先确认没有 git 进程还在运行
ps aux | grep git
# 确认无进程后再删
rm -f .git/index.lock

看或改 hooks。.git/hooks/ 里是各个钩子脚本。husky 之类的工具会往这里写入内容,钩子行为异常时要进去看实际生成的脚本长什么样。注意 .git/hooks/ 里的文件不进版本控制,所以换机器后要重新安装。

改仓库级配置。.git/config 存的是当前仓库的配置(远程地址、分支追踪关系)。虽然更推荐用命令改:

git config --local --list          # 看当前仓库的配置
git config --local user.email x@y.com
git remote -v                       # 看远程地址

但有时候直接看文件更快,尤其是配置乱了想整体对一遍的时候。

排查 packed-refs 和 ORIG_HEAD。做完一次误操作想找回丢失的提交,.git/ORIG_HEAD 存着操作前的 HEAD,配合 git reflog 能救回来。

反过来的需求:想隐藏更多东西

比 .git 更值得加进 Ignored 列表的其实是这些:

.idea;node_modules;.next;.nuxt;coverage;*.log

不过要谨慎。node_modules 加进这个列表会带来副作用:IDE 完全看不到依赖的源码,跳转到定义、TypeScript 的类型推断都会失效。所以 node_modules 应该用 Excluded 而不是 Ignored——Excluded 不建索引但 IDE 仍然能解析类型。实际上 WebStorm 对 node_modules 有专门的处理逻辑,默认就做了合适的优化,一般不用手动干预。

.idea 目录同理,如果你想把它排除在版本控制之外,写进 .gitignore 就行,不用在 IDE 里隐藏它——偶尔还需要进去看看某个配置文件。

我实际会加进 Ignored 列表的只有临时产物:

*.tsbuildinfo;.turbo;.parcel-cache

这些既不需要看、也不需要索引,隐藏掉能让 Project 面板干净一些。

改完不生效的排查

改了列表但 .git 还是不显示,按这个顺序看:

  1. 有没有点 Apply。Settings 面板关掉时如果点的是 Cancel,改动不保存。
  2. 分号有没有漏。这个列表是靠 ; 分隔的,删 .git 时如果把前后的分号也删了,会把相邻两项粘成一个无效模式,比如 .DS_Store.hg,那两项就都失效了。删的时候连着后面的分号一起删(.git;),保持其余项完整。
  3. Project 面板的过滤器。面板右上角的漏斗/齿轮图标里有 Show Excluded Files、Show Hidden Files and Directories 之类的开关,如果关了,即便不在 Ignored 列表里也不显示。这两个和 Ignored 列表是叠加生效的。
  4. File > Invalidate Caches。极少数情况索引状态不对,用 File → Invalidate Caches / Restart 重建一次索引。这个操作会让 IDE 重新扫全项目,大项目要等一会儿,所以放在最后试。
💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEWebStorm 目录中 .git 文件夹不显示的解决方法加载中