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

Xcode的UserInterfaceState.xcuserstate文件Git提交异常及协作疑问

问题解答

1. 为什么git add *.*没包含这个文件?

*.*是Shell通配符,仅匹配当前目录下文件名包含.的文件,不会递归扫描子目录里的文件。你的UserInterfaceState.xcuserstate处于多层子目录中,git add *.*根本没扫描到它,自然不会被加入暂存区。

正确的批量提交命令应该用:

git add .  # 追踪当前目录及所有子目录的变更文件
# 或者
git add -A # 追踪所有已追踪文件的变更、新增文件,包括已删除的文件

2. UserInterfaceState.xcuserstate是用户特定文件吗?

是的,这是Xcode生成的本地用户配置文件,存储的是你个人的IDE界面状态:比如窗口大小位置、打开的文件标签、断点布局、调试会话状态等。每个开发者的这个文件内容都是独一无二的,属于本地个性化设置,完全不需要提交到Git仓库。

3. 团队协作中会覆盖他人的这个文件吗?

如果把它提交到仓库,一定会引发问题:

  • 其他开发者拉取代码时,Git会检测到该文件的内容冲突(因为每个人的界面状态不同),需要手动解决无意义的冲突;
  • 就算合并成功,你的文件内容会覆盖别人的本地文件,导致对方丢失自己的IDE界面配置,反过来也一样。

彻底解决方法

第一步:从Git仓库中移除已提交的该文件(保留本地文件)

git rm --cached abc/abc.xcodeproj/project.xcworkspace/xcuserdata/axz.xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "移除用户特定的UserInterfaceState.xcuserstate文件"
git push

--cached参数只会把文件从Git的追踪列表中移除,不会删除你本地的文件,不影响你的IDE使用。

第二步:添加到.gitignore防止后续误提交

在项目根目录的.gitignore文件中添加一行:

*.xcuserstate

这会让Git忽略所有.xcuserstate后缀的文件,不管它们在哪个子目录里。

第三步:合并分支后的清理

如果已经把包含该文件的分支合并到main分支,在main分支上执行同样的移除操作和.gitignore配置,然后推送到远程,避免其他成员拉取main分支时遇到同样问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:10:32