Cocoapods project.pbxproj合并冲突

时间:2014-11-14 06:59:04

标签: ios xcode git merge cocoapods

我花了很长时间寻找与project.pbxproj文件合并冲突的答案。我的合并冲突主要发生在Cocoapods。似乎如果我在分支上添加一个pod,然后尝试将它合并到另一个分支中,那么我的Pods项目的project.pbxproj文件中会出现很多合并冲突。我会简单地通过手动修复这些冲突,但是有很多方法可以让它合理。有没有其他人遇到过这个问题并找到了合理的解决方案这个问题一直困扰着我,我只是把这个问题作为最后的手段。在不同的分支机构上创建了几个新功能后,将这些功能包括在我的项目中会非常令人沮丧。任何帮助将非常感谢。

2 个答案:

答案 0 :(得分:11)

只要您不对Pods.xcodeproj文件进行更改(您可能不应该进行更改),那么事实的来源始终是pod install生成的内容。 。因此,如果存在许多冲突,您只需删除项目并重新生成它即可。

答案 1 :(得分:0)

我经常遇到这种情况。我有一个大部分都有效的食谱。我们使用 Git-flow,因此通常会尝试将功能分支合并到 develop 中。内存就是这样,通常我们第一次注意到这是 GitHub 警告冲突时。

  1. 在您的本地功能分支上提交(或存储)所有未完成的工作。
  2. 运行pod deintegrate (docs here)
  3. 提交分支。它暂时处于无法使用的状态。这将立即得到解决。
  4. 切换到最新的develop
  5. 再次运行 pod deintegrate
  6. 提交对 develop 的更改。不要将这些更改推到原点。此提交将很快被删除。
  7. 切换回您的工作分支。
  8. 合并到您本地的 develop。希望这不会发生冲突。
  9. 运行 pod install,运行应用并检查一切是否按预期运行。
  10. 提交合并。删除本地 develop 提交(即 git reset 到原点)
  11. 推送工作分支更改。

您可能还需要考虑使用钩子来防止推送集成项目。这使开发人员在推动更改之前承担 pod deintegrate 的责任(并且还要求其他开发人员在合并 from pod deintegrate 之前develop)但确实消除了一个潜力如果使用像 GitHub 这样管理您的工作流的云存储库提供商,则会导致冲突。

将文件添加操作拆分为自己的提交以减少噪音也是值得的。