簡體   English   中英

我應該 git 忽略 xcodeproject/project.pbxproj 文件嗎?

[英]Should I git ignore xcodeproject/project.pbxproj file?

在 XCode 項目中,我犯了 xcodeproject/project.pbxproj 文件更改,但對我來說無用的信息,它用於編譯。

我應該忽略這個文件和 xcodeproject/projectxworkspace/username.xcuserdata/UserInterfaceState.xcuserstate 文件嗎?

根據 Swift 包管理器進行更新:如果您將項目構建為 Swift 包 - 您絕對應該忽略此文件,因為它可以使用文件系統作為真實來源生成。 您可以使用以下命令執行此操作:

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

對於非 SwiftPM 答案 - 見下文。

該文件包含項目中所有文件的列表、目標的設置以及哪些文件屬於哪些目標。 它可能是項目包中最豐富的文件。 不應忽略此文件。 這有幾點:

  1. 您可能不想單獨從事這個項目,或者;
  2. 您正計划在不同機器上處理項目;
  3. 您將希望與他人共享您的代碼庫;

這是您在 xcodeproj 包中的存儲庫中唯一需要的文件。 該文件包含目標文件和構建設置的所有信息。

不幸的是,如果您的構建設置包含代碼簽名,那么如果其他團隊成員更改了它,您必須在每次“git pull”之后重新輸入您的代碼簽名實體。 在我看來,這個信息應該在用戶設置中,而不是全局 pbxproj 文件中。

如果排除 project.pbxproj Jenkins 構建將失敗。 所以如果你使用 Jenkins,這很重要。

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

您可以使用 Xcodegen 從 YAML 項目規范文件中生成 pbxproj,然后您可以在 git 中忽略 pbxproj 並在每次需要時生成它們。

我已經在第二個項目中使用了 Xcodegen,該項目具有模塊化架構(許多 pbxprojs),並且有超過 8 位開發人員正在研究它。

https://github.com/yonaskolb/XcodeGen

希望能幫助到你。

我發現我還需要保留 xcworkspace 文件。 如果沒有,帶有子項目的項目就會失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM