You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VScode(WSL)环境Ruby项目提交时文件莫名标记变更的技术问询

WSL下VSCode开发Ruby项目文件权限变更问题解决方案

A) 如何查明文件的具体变更内容?

  • 用Git查看权限变更:执行git diff,如果看不到权限变化,先检查Git权限追踪配置:
    • 运行git config core.filemode,若输出为false,执行git config core.filemode true开启权限追踪,再次运行git diff就能看到权限从100755(可执行)变为100644(不可执行)的记录。
  • 对比本地与仓库权限:
    • 查看本地文件权限:ls -l bin/ release-tasks.sh
    • 查看仓库中记录的权限:git ls-tree HEAD -- bin/bundle(替换为对应文件名),输出字段的前7位中前三位即为权限值(如100755)。

B) 如何阻止VSCode标记变更并避免修改文件?

方案1:让Git忽略权限变更

  • 仅当前项目生效:在项目根目录执行git config core.filemode false,Git将不再追踪任何文件的权限变化,适合团队统一配置场景。
  • 全局生效:执行git config --global core.filemode false,对所有本地Git仓库生效,个人开发环境推荐使用。

方案2:禁止VSCode触碰目标文件

  • 配置VSCode忽略文件监控:打开VSCode的settings.json(快捷键Ctrl+,后点击右上角打开设置文件),添加以下配置,阻止VSCode监控这些文件的变化:
    "files.watcherExclude": {
        "**/bin/bundle": true,
        "**/bin/dev": true,
        "**/bin/rails": true,
        "**/bin/rake": true,
        "**/bin/rubocop": true,
        "**/bin/rubycritic": true,
        "**/bin/setup": true,
        "**/release-tasks.sh": true
    }
    
  • 检查扩展设置:查看已安装的Ruby相关扩展(如Ruby LSP、Ruby等),确认是否存在自动修改文件权限或格式化的设置,关闭对应选项。

方案3:锁定文件状态

  • 恢复仓库原始权限:执行git checkout HEAD -- bin/bundle bin/dev bin/rails bin/rake bin/rubocop bin/rubycritic bin/setup release-tasks.sh,将文件权限恢复为仓库记录的100755。
  • 手动设置执行权限:若恢复后权限仍不对,运行chmod +x bin/* release-tasks.sh重新赋予可执行权限。
  • 让Git忽略该文件的所有变更:执行git update-index --assume-unchanged <文件名>(如git update-index --assume-unchanged bin/bundle),Git将不再追踪该文件的任何改动。注意:若仓库中该文件有更新,需先执行git update-index --no-assume-unchanged <文件名>取消锁定,才能拉取更新。

内容的提问来源于stack exchange,提问作者Nick Fleetwood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:22:29