【问题标题】:The working copy “Pods” failed to commit files - Realm Errors工作副本“Pods”未能提交文件 - 领域错误
【发布时间】:2016-03-26 16:19:36
【问题描述】:

由于以下错误,我无法将我的 Xcode 项目更改提交到 Github。正如您在下面看到的,它与 Realm 有关。我最近更新了豆荚。有关如何解决此问题的任何建议。

【问题讨论】:

  • 所以看起来你将Pods 目录签入到 git 中。您可以在 Terminal.app 的项目目录中运行 git status 并在此处显示输出吗?
  • 根据您的评论,我认为我不应该将“Pods”文件夹提交到 Github。这发生在我升级到最新的 Xcode 时。以前从未有过这样的选择。输出太长。准备用屏幕截图编辑我的帖子。

标签: xcode swift github cocoapods realm


【解决方案1】:

假设您想将 Pods 目录提交到 Git,这样可以确保您在签出某个修订时始终可以编译您的项目,而无需之前运行 pod install,那么您可以重置您在暂存中的内容通过在您的项目目录中运行以下命令,在Pods目录中的区域:

git rm --cached -r Pods
git add -A Pods

(免责声明:运行此类命令可能会丢失数据。如有必要,请熟悉它们的含义,以免意外删除要提交的内容。)

或者,您可以将Pods 目录添加到您的.gitignore 文件中。这将确保您将来无法提交 Pods 目录,但是在更改 Podfile.lock 之后运行 pod install 是必要的,例如切换分支、协作和 CI。

您可以通过在项目目录中的 shell 上执行以下命令来实现:

 echo "/Pods" >> .gitignore

完成此操作后,您需要将对 .gitignore 的更改提交到您的存储库。此外,我建议对您的存储库进行专门的提交,您可以在其中删除 Pods 目录下的文件。这将只影响存储库内容,而不影响您的本地结帐。


CocoaPods 指南“使用 CocoaPods”有一章 "Should I check the Pods directory into source control?",详细讨论了它的优缺点:

我应该将 Pods 目录检查到源代码管理中吗?

是否签入Pods 文件夹取决于您,因为 工作流程因项目而异。我们建议您保留 源代码控制下的 Pods 目录,不要将其添加到您的 .gitignore。但最终这个决定取决于你:

签入 Pods 目录的好处

  • 克隆 repo 后,项目可以立即构建和运行,即使机器上没有安装 CocoaPods。没有 需要运行pod install,并且不需要互联网连接。
  • 即使 Pod 的源(例如 GitHub)出现故障,Pod 工件(代码/库)也始终可用。
  • 在克隆 repo 后,Pod 工件保证与原始安装中的工件相同。

忽略 Pods 目录的好处

  • 源代码控制存储库将更小,占用的空间更少。
  • 只要所有 Pod 的源(例如 GitHub)都可用,CocoaPods 通常能够重新创建相同的安装。 (从技术上讲,不能保证运行 pod install 会 在不使用提交 SHA 时获取并重新创建相同的工件 播客文件。在使用 zip 文件时尤其如此 Podfile。)
  • 在执行源代码控制操作时不会有任何冲突需要处理,例如合并不同 Pod 的分支 版本。

无论您是否签入Pods 目录、PodfilePodfile.lock 应始终处于版本控制之下。


此外,您可能想检查一下您的.gitignore 是否可以改进。例如,我可以从屏幕截图中识别出您的 Xcode 项目中有一个 xcuserdata 目录,Git 不会忽略该目录。这些是特定于用户的配置文件,不一定属于存储库。如果您与其他人协作,则忽略这些会减少 repo 的大小和拉取请求中的噪音,并使更改集更易于查看。但如上所述,最终取决于您是否要签入它们。 GitHub 托管了一个众包存储库,其中包含各种语言的文件模板。 Their Objective-C file 对您来说可能是一个很好的起点。

【讨论】:

    猜你喜欢
    • 2019-04-20
    • 2011-03-12
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多