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

Xcode Source Control无法追踪新增文件变更的原因及解决方法

问题现象
  • Xcode中新增文件时,偶现Source Control无法追踪新增文件代码变更的问题
  • 相同变更可在SourceTree等第三方Git客户端正常识别查看
  • Xcode编辑器行号旁本该显示的蓝色修改标识条无法正常展示
  • 该问题目前仅出现在新增文件场景,已有文件的修改、删除操作对应的变更标识展示正常
已尝试排查操作
  • 关闭并重启Xcode,甚至重启MacBook设备,问题未解决
  • 通过Xcode Source Control工具栏手动添加未追踪文件,操作后文件显示已纳入源码控制管理,但仍无法显示行号旁的蓝色变更标识条
问题根因

该故障本质是Xcode内置Source Control模块的状态缓存机制缺陷:

  1. 当新增文件通过拖拽导入、第三方编辑器创建后再加入工程时,Xcode后台的Git状态轮询进程不会主动扫描这类新增文件的工作区diff缓存,错误将其判定为"无本地修改的已追踪文件",不会触发行侧边栏的变更标识渲染
  2. 部分场景下Xcode的Source Control自动刷新开关对应进程挂死,仅会扫描已在Git索引中的存量文件变更,直接跳过从untracked状态转为已追踪状态的新增文件
  3. 若工程存在多分支频繁切换、子模块嵌套的情况,Xcode读取Git索引时会出现状态同步延迟,也会触发该问题
修复方案(按操作成本从低到高排序)
  • 强制刷新Source Control状态
    点击Xcode顶部菜单栏 Source Control > Refresh Status,等待3-5秒让Xcode重新拉取全量Git工作区状态,80%的偶发缓存挂死问题可通过该操作解决
  • 重置Xcode本地工程缓存
    1. 完全退出Xcode
    2. 打开终端进入工程根目录,执行以下命令清理本地缓存:
    rm -rf .swiftpm/xcode/xcuserdata
    rm -rf ~/Library/Developer/Xcode/DerivedData/$(ls ~/Library/Developer/Xcode/DerivedData | grep -i 你的工程名称前缀)
    
    如果命令行匹配不到对应缓存文件夹,可直接打开访达,按快捷键Cmd+Shift+G输入~/Library/Developer/Xcode/DerivedData,手动删除和当前工程名对应的文件夹即可
    3. 重新打开Xcode等待工程索引完成,即可正常识别变更
  • 强制刷新Git文件索引
    若上述操作无效,在终端工程根目录执行以下命令,强制Git刷新全量文件状态标记:
    git add -A
    git reset HEAD .
    
    命令执行完成后回到Xcode,即可看到行边的蓝色变更标识正常展示
  • 校验Source Control配置项
    打开Xcode设置页进入Source Control分类,确认Show local revision changes in the source editor选项处于勾选状态;再打开File > Workspace Settings > Source Control,将自动刷新本地状态的开关关闭后重新开启,重启Xcode即可生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:42:14