在一个XCode项目中,我修改了xcodeproject / project.pbxproj文件,但是对我来说无用的信息,它用于编译。
我应该git忽略这个文件和xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate文件吗?
答案 0 :(得分:117)
根据Swift Package Manager进行更新:如果您正在将项目构建为Swift包 - 您绝对应该忽略此文件,因为它可以使用文件系统作为事实来源生成。您可以使用以下命令执行此操作:
$ cd ~/Projects/MyProjectFolder/
$ swift package generate-xcodeproj
对于非SwiftPM答案 - 见下文。
此文件包含项目中所有文件的列表,目标设置以及属于哪些目标的文件。它可能是项目包中最内容的文件。您不应该忽略此文件。对此有几点意见:
答案 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
希望有帮助。