如何让WebStorm和PhpStorm为同一Git仓库配置独立目录排除规则
问题根因
你遇到的配置同步问题没有特殊玄学,本质是JetBrains系IDE(WebStorm、PhpStorm等)默认把所有项目配置统一存在项目根目录的.idea文件夹里,目录排除标记属于项目级配置,只要两个IDE打开的是同一个根目录,就会读写同一份配置文件,改了一个的设置另一个打开自然会同步变化。
可落地方案
以下方案都满足保留单仓库结构、以仓库根为项目根保证Git功能正常的要求,按需选择即可。
方案一:为两个IDE指定独立的配置存储目录(推荐,100%隔离无冲突)
这个方案直接从存储层把两个IDE的配置完全分开,从根源上避免配置互串,操作也很简单:
- 先把项目根目录下原有
.idea文件夹备份好之后删掉,避免旧配置残留导致异常。 - 打开WebStorm,选「打开」,选中你的仓库根目录,别直接点确认,找打开窗口里的高级设置,有个「配置文件夹位置」的选项,把默认的
[项目根]/.idea改成自定义路径,比如[项目根]/.idea-webstorm,再确认打开项目。 - 进WebStorm的
设置 > 项目结构 > 模块,找到backend目录右键标记为「排除」,保存就行。之后WebStorm所有的项目配置都会存在你刚才指定的.idea-webstorm文件夹里,和PhpStorm的配置完全不搭边。 - 再开PhpStorm,重复上面的打开流程,把配置文件夹位置设为
[项目根]/.idea-phpstorm,打开后进项目结构设置,把frontend目录标记为排除就可以正常用了。 - 最后把这些IDE专属的配置目录都加到
.gitignore里,别提交到仓库:
.idea/ .idea-webstorm/ .idea-phpstorm/
补充说明:这个操作完全不影响Git功能,IDE识别Git仓库只看项目根目录下有没有
.git文件夹,和配置存在哪半毛钱关系都没有,提交代码、切分支、看diff这些功能全都是正常的。要是你之前已经把.idea目录提交到仓库过,执行git rm -r --cached .idea提交一下,就能让Git不再跟踪这个目录的改动。
方案二:排除规则仅保留本地,不提交到Git
如果你不想改默认的配置存储路径,也可以把存目录排除规则的配置文件从Git跟踪列表里踢出去,只留在本地用:
- 把下面这些规则加到
.gitignore里:
.idea/*.iml .idea/modules.xml .idea/externalDependencies.xml
- 要是这些文件之前已经提交到仓库了,执行
git rm -r --cached .idea/*.iml .idea/modules.xml .idea/externalDependencies.xml之后提交一次,Git就不会再跟踪这些文件的改动了。 - 之后分别在两个IDE里打开项目,设置好对应的排除目录就行,这些配置只会存在你本地,不会同步到仓库影响其他人。
注意:这个方案下两个IDE还是共用本地同一份
.idea配置,如果你本地经常来回切两个IDE开同一个项目,还是有可能出现配置被覆盖的情况,稳定性不如方案一,优先选方案一更省事。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

