TL; Dr использовать:
pod update podName
Зачем? Читай ниже.
pod updateНЕ будет уважать podfile.lock. Это переопределит это.
pod install будет уважать podfile.lock
Эта диаграмма помогает лучше понять различия:

Основная проблема исходит от ~>ака оптимистического оператора .
Использование точных версий в Podfileнедостаточно
Некоторые могут подумать, что указание точных версий своих модулей в их Podfile, например pod 'A', '1.0.0', достаточно, чтобы гарантировать, что у каждого пользователя будет та же версия, что и у других людей в команде.
Тогда они могут даже использовать pod update, даже просто добавляя новый модуль, думая, что никогда не рискнет обновить другие модули, потому что они привязаны к определенной версии в Podfile.
Но на самом деле этого недостаточно, чтобы гарантировать, что user1 и user2 в нашем вышеупомянутом сценарии всегда получат одинаковую версию всех своих модулей.
Один типичный пример - если у модуля Aесть зависимость от модуля, A2объявленного A.podspecкак dependency 'A2', '~> 3.0'. В таком случае использование pod 'A', '1.0.0'в вашем Podfile действительно заставит user1 и user2 всегда использовать версию 1.0.0 pod A, но:
- У user1 может быть pod
A2в версии 3.4(потому что это была A2последняя версия на тот момент)
- в то время как когда user2 запускается
pod installпри присоединении к проекту позже, они могут получить pod A2в версии 3.5(потому что сопровождающий A2может выпустить новую версию за это время). Вот почему единственный способ обеспечить, чтобы каждый член команды работал с одинаковыми версиями всех модулей на каждом компьютере, - это использовать Podfile.lockи правильно использовать pod installи pod update.
Вышеприведенный отрывок был взят из установки pod или обновления pod
Я также настоятельно рекомендую смотреть , что делает podfile.lockDo
podfile.lockтакое. Смотрите ссылку и видео, на которое она ссылается.