我应该忽略xcodeproject / project.pbxproj文件吗?

时间:2011-11-06 10:24:07

标签: ios xcode macos git

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

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

7 个答案:

答案 0 :(得分:117)

根据Swift Package Manager进行更新:如果您正在将项目构建为Swift包 - 您绝对应该忽略此文件,因为它可以使用文件系统作为事实来源生成。您可以使用以下命令执行此操作:

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

对于非SwiftPM答案 - 见下文。

此文件包含项目中所有文件的列表,目标设置以及属于哪些目标的文件。它可能是项目包中最内容的文件。您不应该忽略此文件。对此有几点意见:

  1. 您可能不想单独使用此项目;
  2. 您计划从不同的机器上处理项目;
  3. 您希望与他人分享您的代码库;

答案 1 :(得分:6)

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

答案 2 :(得分:4)

如果排除project.pbxproj,Jenkins构建将失败。所以如果你使用Jenkins这很重要。

答案 3 :(得分:3)

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我发现我还需要保留xcworkspace文件。如果没有,项目与子项目破裂。

答案 6 :(得分:0)

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

我已经在另一个具有模块化体系结构(许多pbxprojs)的项目中使用了Xcodegen,然后有8个以上的开发人员正在使用它。

https://github.com/yonaskolb/XcodeGen

希望有帮助。