Должен ли я git игнорировать файл xcodeproject / project.pbxproj?

101

в проекте XCode я изменил файл xcodeproject / project.pbxproj, но для меня это бесполезная информация, она для компиляции.

Должен ли я git игнорировать этот файл и файл xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate?

qichunren
источник
Файлы .xcuserstate можно игнорировать, но не файл pbxproj.
Кендалл Хельмштеттер Гельнер
Нет, вот ваш ответ: stackoverflow.com/questions/49478/…
jeswang

Ответы:

130

Обновление в свете Swift Package Manager: если вы создаете проект как пакет Swift - вам определенно следует игнорировать этот файл, поскольку он может быть сгенерирован с использованием файловой системы как источника истины. Вы можете сделать это с помощью следующей команды:

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

Для ответа, отличного от SwiftPM, см. Ниже.

Этот файл содержит список всех файлов в проекте, настройки целей и какие файлы каким целям принадлежат. Вероятно, это самый объемный файл в комплекте проекта. Вы не должны игнорировать этот файл. Для этого есть несколько моментов:

  1. Возможно, вы не захотите работать над этим проектом в одиночку или;
  2. Вы планируете работать над проектом на разных машинах;
  3. Вы захотите поделиться своей кодовой базой с другими;
Эймантас
источник
6

Это единственный файл, который вы хотите добавить в свои репозитории из пакета xcodeproj. Этот файл содержит всю информацию о целевых файлах и настройках сборки.

Grady Player
источник
1
Этот ответ, возможно, когда-то был правдой, но в настоящее время неверен. Неверно, что он содержит «всю информацию» (некоторые вещи, например, пользовательские исполняемые файлы хранятся в другом файле, например, рабочие области хранятся в другом файле и т. Д.), И неверно, что это «единственный файл», который вы хочу хранить. cf вопрос о том, что включить в .gitignore - stackoverflow.com/questions/49478/…
Адам
1
это кажется хорошо продуманным ... следите за этим в будущем.
Grady Player
4

К сожалению, если ваши настройки сборки включают подпись кода, вам придется повторно вводить объект подписи кода после каждого «git pull», если другой член команды изменил ее. Мне кажется, эта информация должна быть в настройках пользователя, а не в глобальном файле pbxproj.

Юлиус Смит
источник
2
Вы можете настроить подпись кода так, чтобы каждый из вас в проекте имел другой профиль подписи кода, который соответствует одной и той же (общей) настройке в проекте, например, используя подстановочное имя, а затем каждый из вас сопоставляет его отдельно, или например, все находятся в одной команде iTunes и имеют общие профили.
Адам
3

Если вы исключите project.pbxproj, сборки Jenkins завершатся ошибкой. Так что это важно, если вы используете Jenkins.

Джозеф Боладе Кэкстон-Идову
источник
0

Я обнаружил, что мне также нужно сохранить файл (ы) xcworkspace. В противном случае проект с подпроектом разорвался.

Поль Сезанн
источник
0

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

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

https://github.com/yonaskolb/XcodeGen

Надеюсь, поможет.

Кирилл Чермак
источник
0

project.pbxproj - важный файл в пакете конфигурации Xcode. Он отвечает за поддержку ссылок на все связанные файлы и их группы, связанные фреймворки и, что наиболее важно, настройки сборки проекта. Из-за этого мы не можем исключить project.pbxproj из контроля версий.

Вот мой общий .gitignoreдля моего проекта Xcode.

# 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
Джеймс
источник