Чи слід git ігнорувати файл xcodeproject / project.pbxproj?


101

У проекті XCode я відключив, що файл xcodeproject / project.pbxproj змінено, але для мене непотрібна інформація, це для компіляції.

Чи повинен я ігнорувати цей файл та файл xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate?


.xcuserstate файли можна ігнорувати, тільки не файл pbxproj.
Кендалл Гельмстеттер Гельнер

Ні, ось ваш відповідь: stackoverflow.com/questions/49478 / ...
jeswang

Відповіді:


128

Оновлення у світлі менеджера пакетів Swift: Якщо ви будуєте проект як пакет Swift - ви обов'язково ігноруйте цей файл, оскільки він може бути створений за допомогою файлової системи як джерела істини. Це можна зробити за допомогою наступної команди:

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

Для відповіді не SwiftPM - див. Нижче.

Цей файл містить список усіх файлів у проекті, налаштування цілей та файли, до яких належать цілі. Це, мабуть, найпотужніший файл у пакеті проекту. Ви не повинні ігнорувати цей файл. Є кілька моментів для цього:

  1. Ви, можливо, не хочете працювати над цим проектом самостійно або;
  2. Ви плануєте працювати над проектом з різних машин;
  3. Ви хочете поділитися своєю базою коду з іншими;

6

Це єдиний файл, який ви хочете у своїх репостах із пакета xcodeproj. Цей файл містить всю інформацію про цільові файли та настройки збірки.


1
Ця відповідь колись може бути правдивою, але наразі є неправильною. Неправда, що вона містить "всю інформацію" (кілька речей, наприклад, користувацькі виконувані файли зберігаються в іншому файлі, наприклад робочі простори зберігаються в іншому файлі тощо), і неправда, що це "єдиний файл", який ви хочу зберігати. порівняй питання про те , щоб включити в .gitignore - stackoverflow.com/questions/49478 / ...
Adam

1
це здається добре продуманим ... слідуйте за цим у майбутньому.
Гравець Граді

4

На жаль, якщо ваші налаштування збірки включають підписання коду, вам доведеться повторно вводити суб'єкт підписання коду після кожного "git pull", якщо інший член команди змінив його. Мені здається, ця інформація повинна бути в налаштуваннях користувача, а не у глобальному файлі pbxproj.


2
Ви можете налаштувати підпис коду таким чином, щоб кожен із вас у проекті мав інший профіль підпису коду, який відповідає тому самому (спільному) параметру в проекті, наприклад, використовуючи ім'я підстановки, а потім кожен з вас порівнювати його окремо або наприклад, всі перебувають в одній команді iTunes та обмінюються профілями.
Адам


0

Я виявив, що мені також потрібно зберегти файли xcworkspace. Якщо ні, проект із підпроектом зламався.


0

Ви можете використовувати Xcodegen для створення pbxproj з файлу специфікації проекту YAML, тоді ви можете ігнорувати pbxproj в git та генерувати їх кожного разу, коли вам потрібно.

Я вже використовував Xcodegen для другого проекту, який має модульну архітектуру (багато pbxprojs) і над ним працює понад 8 розробників.

https://github.com/yonaskolb/XcodeGen

Сподіваюся, це допомагає.


0

project.pbxproj - важливий файл у комплекті конфігурації Xcode. Він несе відповідальність за збереження посилань на всі пов'язані файли та їх угруповання, зв'язані рамки та, що найголовніше, налаштування збірки проекту. Через це ми не можемо виключити project.pbxproj з контролю версій.

Ось мій загальний .gitignoreдля мого Xcode Project.

# 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.