Cocoapods项目.pbxproj合并冲突

9

我花了很长时间寻找关于project.pbxproj文件合并冲突的答案。我的合并冲突主要发生在Cocoapods上。如果我在一个分支上添加一个pod,然后尝试将其合并到另一个分支,许多许多合并冲突会在我的Pods项目的project.pbxproj文件中出现。我会逐个手动修复这些冲突,但是由于数量太多,这种方法变得不切实际。是否有其他人遇到过这个问题并找到了合理的解决方案?这个问题已经困扰我有一段时间了,我只是作为最后的手段来问这个问题。在创建了几个新功能的独立分支之后,遇到这么多麻烦将它们包含到我的项目中非常令人沮丧。任何帮助都将不胜感激。

3个回答

15
只要您没有对 Pods.xcodeproj 文件进行修改(您可能不应该这样做),那么真相源头始终是使用 pod install 生成的内容。因此,如果出现许多冲突,您可以只需删除项目并重新生成即可。

你是否建议先删除Pods.xcodeproj,然后合并文件,再重新生成它或者先删除它们,重新生成,然后再合并?我已经尝试过这两种方法,但这只是将冲突从Pods.xcodeproj project.pbxproj移动到我的主要配置文件project.pbxproj。 - ferris
3
当你遇到合并冲突时,我建议你删除有冲突的文件并再次运行 pod install,前提是你自己没有编辑过这些文件。 - Keith Smiley
@KeithSmiley 感谢您在这里的评论,这解决了我的问题! - Greg Hilston

0

根据这个指南:https://github.com/CocoaPods/CocoaPods/issues/3093

如果CocoaPods说出这个消息,那么项目将在一行上有<<<<<<<, >>>>>>>=======,表示它有一个未解决的冲突。

可能仍然存在冲突标记,并且文件仍处于冲突状态(git只是因为被告知已经解决了而说它已经解决了,而不管冲突标记)。

您可以通过运行以下命令在文件中找到它们:

grep -E '<<<<<<<|>>>>>>>|=======' /path/to/project/project.pbxproj

0

我经常遇到这个问题。我有一个配方,在大多数情况下工作良好。我们使用Git-flow,通常将特性分支合并到develop分支中。由于内存的限制,我们通常是在GitHub警告存在冲突时才第一次注意到这一问题。

  1. 在本地功能分支上提交(或隐藏)所有未完成的工作。
  2. 运行 pod deintegrate这里是文档
  3. 提交该分支。它暂时处于不可用状态,但很快会解决。
  4. 切换到最新的 develop
  5. 再次运行 pod deintegrate
  6. 提交更改到 develop。不要将这些更改推送到远程仓库。此提交将很快被删除。
  7. 切换回你的工作分支。
  8. 合并你的本地 develop。希望这是无冲突的。
  9. 运行 pod install,运行应用程序并检查一切是否正常。
  10. 提交合并。删除本地的 develop 提交(即 git reset 到远程仓库)
  11. 推送工作分支的更改。

你也可以考虑使用挂钩hook来防止推送集成项目。这会让开发人员在上传更改之前执行pod deintegrate, 并且要求其他开发人员在从develop合并之前也执行pod deintegrate。但是,如果使用像GitHub这样管理工作流的云存储库提供程序,则会删除潜在的冲突源之一。

另外,将文件添加操作拆分为单独的提交以减少噪音也是值得的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接