project.pbxproj всегда помечается как измененный в git - PullRequest
0 голосов
/ 06 января 2020

У меня есть некоторые проблемы с xcode, с исчезающими связанными библиотеками, et c.

После некоторых исследований кажется, что мой файл project.pbxproj был полностью изменен между двумя коммитами, и я пытаюсь восстановить более старую версию. Однако, и прошло уже некоторое время, мой project.pbxproj всегда помечается git как измененный. Я всегда считал, что XCode изменяет файл, в то же время я изменял некоторые вещи в GUI. Однако в первый раз git удерживает меня от слияния или возврата из-за изменений в этом файле. Я не могу gitignore это, поскольку он содержит жизненно важную информацию, необходимую для создания моего проекта.

Это становится более странным, поскольку файл действительно всегда находится в измененном состоянии. Я только что попытался загрузить мою ма c без абсолютно открытого приложения, без IDE, без xcode и просто открыть терминал, чтобы клонировать мой проект во вновь созданную папку. После клонирования, если я просто вхожу в папку cd и статус git, файл помечается как измененный.

Это нормальное поведение? У людей были проблемы с этим файлом и git? Могу ли я вернуть свой project.pbxproj в старое состояние, и это безопасно? Существуют ли какие-нибудь git конфигурации, которые я могу использовать для лучшей обработки этого файла?

Мой проект не является родным, я использую фреймворк реагировать-нативный

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Файл project.pbxproj постоянно меняется, поскольку он содержит информацию о структуре и конфигурации проекта, связанных платформах и т. Д.

Я обнаружил, что добавление *.pbxproj binary merge=union в мои .gitattributes исправило 95% из моих проблем слияния в этом файле всегда есть один редкий случай, когда объединение завершается неудачно, и у вас заканчиваются плохие закрывающие скобки, но обычно его легко найти и исправить вручную.

0 голосов
/ 07 января 2020

Я понял, в чем заключалась моя проблема, и здесь я ее разоблачу, а затем оставлю на модерацию, чтобы выяснить, насколько она актуальна, поскольку такая ситуация может случиться с другими людьми.

У меня есть месяцы go, изменил имя моего пакета в Xcode, удалив несколько заглавных букв, так как я понял, что имена пакетов не должны включать заглавные буквы. Имя изменилось с com.mycompany.MyApp на com.mycompany.myapp. В результате XCode удалил папку MyApp.xcodeproj и создал папку myapp.xcodeproj (я думаю, что это было автоматизировано, но я не уверен, так как это произошло несколько месяцев go).

В этом отношении все прошло хорошо, за исключением git, которые отслеживали обе папки в хранилище. Всякий раз, когда я клонировал свой репозиторий, я получал папку myapp.xcodeproj, но git все равно считал, что в репозитории есть и myapp.xcodeproj, и MyApp.xcodeproj.

Это привело к git сравнению разные файлы в локальном и удаленном режиме, поэтому систематически рассматриваем этот файл как измененный, даже если он был просто зафиксирован или даже передан. Git всегда сравнивал текущую версию файла с 2-месячной версией. Поведение было ошибочным c, поскольку папка myapp всегда помечалась как измененная, и при ее изменении она также помечает папку MyApp как измененную.

Надеюсь, это когда-нибудь может кому-то помочь.

Я отвечу на свои вопросы:

Это нормальное поведение? Абсолютно нет

Были ли у людей проблемы с этим файлом и git? Да, объединение этого файла человеком сложно, и я бы не стал его рекомендовать. Чтобы избежать необходимости, ответ Хавьера Риваролы, а также этот вопрос может помочь вам

Могу ли я вернуть свой project.pbxproj в старое состояние и безопасно ли Сделай так? Вы потеряете конфигурацию, которую вы сделали после этого, но файл останется действительным

Существуют ли какие-нибудь конфигурации git, которые я могу использовать для лучшей обработки этого файла? см. Второй вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...