Xcode 8 - 缺失文件警告

128
自从升级到Xcode 8和Swift 2.3以后,我收到了几个缺失文件的警告。这些文件都与我正在使用的代码库有关。 缺失的文件包括:
*.xcscheme 
*.cpp
*.xcuserstate
*.swift

出现缺失文件的pod有:

  • Realm(共43个中的约38个)
  • TextFieldEffects(共43个中的约3个)
  • BEMCheckBox(共43个中的2个)

我该如何解决这个问题?


你尝试过执行 pod install 命令吗? - Marc-Alexandre Bérubé
@Marc-AlexandreBérubé 是的,我已经尝试过几次pod install了。删除了pod文件夹并重新安装了一遍。 - Alan
14个回答

300

这只是Xcode的一个bug。如果您删除或重命名文件而没有进行提交,Xcode会发现之前的 git 提交记录和当前状态之间存在差异,并报告这些警告。只要您执行包括文件删除/重命名的 git add ,这些警告就会消失。


26
将文件加入索引(git add)就足够了,不需要实际提交它们(很可能项目还没有准备好提交...) - djromero
不行。你不能这么认真。 提交的文件 哦,嗯……你说得对。 - Martin
35
对我来说,这很容易,只需要在偏好设置下快速禁用然后重新启用源代码控制。Xcode > 偏好设置 > 源代码控制 > 取消选中“启用源代码控制”....然后再重新启用它。就这样,问题解决了! - BennyTheNerd
太疯狂了。我一直在努力寻找我的丢失文件的引用,不停地在 Xcode 项目中搜索(比喻意义上的),让我感到非常头痛。而实际上,我只需要提交更改就可以了。这个问题已经被归档为雷达问题了吗?为了安全起见,我可能会这样做... - Evan K. Stone
"git add ." 和 "git commit" 已确认。 - EFE
显示剩余4条评论

84
如果您不使用Xcode的源代码控制,而是使用其他Git客户端(如SourceTree或终端),您可以在Xcode中禁用源代码控制,然后警告将消失。
方法是:打开Xcode,选择 "Preferences",再选择 "Source control" 并取消选中 "Enable source control".

这是否会从XCode中删除旧提交的并排比较?我这样假设... - Byron Coetsee

15

我尝试了所有这些方法(和许多其他方法),但它们都没有起作用。经过数小时的尝试各种修复方法,我发现以下步骤有效。

cd "project directory"
git add .

如果不关闭XCode重新打开,将来的提交可能会失败。

希望这能对某些人有所帮助。


太棒了。我的项目在更新 pods 后变得有点混乱,警告信息也太多了……这个解决了。谢谢! - Colibri

8
我通过以下方法简单解决了这个问题:
  1. 将罪魁祸首添加到项目中 enter image description here

  2. 移除引用 enter image description here

这样可以清理XCode的内部状态,消息就会消失了。

确实有效。@matt的解决方案在某些情况下起作用,但我有一个讨厌的文件一直出现在XCode中,这是唯一的方法来摆脱它。 - qwerty_so

7

在源代码控制中的提交(commit)操作怎么样呢?

首先需要展示"your project name".xcodeproj项目的包内容,然后展示project.xcworkspace的包内容,最后删除xcuserdata文件夹。

如果由于“无法与辅助应用程序通信”问题而无法提交,那么请尝试以下步骤:

xcrun git config user.name "Your Name"
xcrun git config user.email YourEmailAddress

*记得重新打开项目以查看效果。

7
您可以通过在X-Code->首选项->源代码控制中勾选"自动添加和删除文件"选项来解决此问题。以下是首选项的截图。

7

Xcode 8似乎经常会错过git add删除/相关文件的操作。为了纠正这一情况,点击Xcode的Source Control菜单中的Commit...选项,确保勾选标记为惊叹号!的文件,然后提交更改即可。这样就可以消除警告。


5

我曾多次遇到这个问题,最终只能通过丑陋的解决方法来解决它!我花时间追踪并找到了原因以及引用的位置!

正如有人提出的那样,它与版本控制有关,但在某些情况下,它确实与直接使用查找器或其他工具(而不是XCode)来操纵文件有关。

以下是一个快速修复方案,可以省去很多麻烦和咒骂!

删除此文件: ./.xcworkspace/xcuserdata/.xcuserdatad/UserInterfaceState.xcuserstate

然后错误就会消失!


1
这起初是有效的,但是缺失的文件很快又出现了。 - Hackmodford

4
我遇到了同样的问题。在我的情况下,我的项目的父目录中有一个.git目录。通过删除该父级目录中的.git目录,错误被解决了。

3

在我的情况下,Pods 被检入到代码库中,导致出现了几百个“缺少文件”的警告。通过将 Pods 从代码库中移除来解决问题:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch Pods/*' --tag-name-filter cat -- --all

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接