【问题标题】:Should I git ignore xcodeproject/project.pbxproj file?我应该忽略 xcodeproject/project.pbxproj 文件吗?
【发布时间】:2011-12-23 00:13:16
【问题描述】:

在一个 XCode 项目中,我将 xcodeproject/project.pbxproj 文件更改了,但对我来说没有用的信息,它用于编译。

我应该忽略这个文件和 xcodeproject/projectxworkspace/username.xcuserdata/UserInterfaceState.xcuserstate 文件吗?

【问题讨论】:

标签: ios xcode macos git


【解决方案1】:

根据 Swift 包管理器更新:如果您将项目构建为 Swift 包 - 您绝对应该忽略此文件,因为它可以使用文件系统作为事实来源生成。您可以使用以下命令来做到这一点:

$ cd ~/Projects/MyProjectFolder/
$ swift package generate-xcodeproj

对于非 SwiftPM 的回答 - 见下文。

此文件包含项目中所有文件的列表、目标设置以及哪些文件属于哪些目标。它可能是项目包中最丰富的文件。您不应忽略此文件。这有几点:

  1. 您可能不想单独处理这个项目,或者;
  2. 您正计划使用不同的机器处理项目;
  3. 您会希望与他人共享您的代码库;

【讨论】:

    【解决方案2】:

    这是您在 xcodeproj 包中的存储库中唯一需要的文件。该文件包含目标文件和构建设置的所有信息。

    【讨论】:

    • 这个答案可能曾经是正确的,但目前是错误的。它拥有“所有信息”既不是真的(例如自定义可执行文件存储在不同的文件中,例如工作空间存储在不同的文件中等),它也不是你的“唯一文件”想要存储。参考文献关于在 .gitignore 中包含什么的问题 - stackoverflow.com/questions/49478/…
    • 这似乎是经过深思熟虑的......以后继续这样做。
    【解决方案3】:

    不幸的是,如果您的构建设置包含代码签名,如果其他团队成员更改了代码签名实体,则您必须在每次“git pull”后重新输入代码签名实体。在我看来,这个信息应该在用户设置中,而不是全局 pbxproj 文件中。

    【讨论】:

    • 您可以设置代码签名,以便项目中的每个人都有一个与项目中相同(共享)设置匹配的不同代码签名配置文件,例如通过使用通配符名称,然后每个人分别匹配它,或者通过例如所有人都在同一个 iTunes 团队并共享个人资料。
    【解决方案4】:

    如果您排除 project.pbxproj,Jenkins 构建将失败。因此,如果您使用 Jenkins,这一点很重要。

    【讨论】:

      【解决方案5】:

      project.pbxproj 是 Xcode 配置包中的一个重要文件。它负责维护对所有链接文件及其分组、链接框架以及最重要的是项目的构建设置的引用。因此,我们无法将 project.pbxproj 从版本控制中排除。

      这是我的 Xcode 项目的一般 .gitignore

      # OS X Finder
      .DS_Store
      
      # Xcode per-user config
      *.mode1
      *.mode1v3
      *.mode2v3
      *.perspective
      *.perspectivev3
      *.pbxuser
      *.xcworkspace
      xcuserdata
      
      # Build products
      build/
      *.o
      *.LinkFileList
      *.hmap
      
      # Automatic backup files
      *~.nib/
      *.swp
      *~
      *.dat
      *.dep
      

      【讨论】:

        【解决方案6】:

        我发现我还需要保留 xcworkspace 文件。如果没有,带有子项目的项目就坏了。

        【讨论】:

          【解决方案7】:

          您可以使用 Xcodegen 从 YAML 项目规范文件中生成 pbxproj,然后您可以在 git 中忽略 pbxproj 并在每次需要时生成它们。

          我已经在第二个项目中使用了 Xcodegen,该项目具有模块化架构(许多 pbxprojs),并且有超过 8 个开发人员正在开发它。

          https://github.com/yonaskolb/XcodeGen

          希望对您有所帮助。

          【讨论】:

            猜你喜欢
            • 2019-01-10
            • 2020-07-27
            • 1970-01-01
            • 2016-08-27
            • 1970-01-01
            • 1970-01-01
            • 2016-04-22
            • 1970-01-01
            • 2023-04-05
            相关资源
            最近更新 更多