多人开发project.pbxproj冲突问题记录

文件引用 (fileRef)冲突

怎么判断?

看冲突的地方是不是两个fileRef指向不同的文件

  • 解决办法:

手动project.pbxproj中搜索>>>找到冲突的位置,然后把两个都保留下来

非文件引用 (fileRef)冲突

  • 解决办法:

先删掉一条引用记录,解决冲突后,再手动把被删掉引用的文件重新拉进项目

  • 详细解决步骤

    1. 先备份你自己写的导致冲突的那部分代码文件(冲突的地方可以看到)
    2. 在project.pbxproj中删除自己写的冲突那部分代码的引用,保留同事的代码引用(此时会发现Xcode左边目录中你的代码没了)
    3. 将自己写得那部分代码重新拉进项目对应的目录(此时build就成功了)
    4. 同事pull代码后可能会报错(就是同事项目目录里面你那部分代码是灰色的,让同事从finder里面引入进项目目录再build就行了)

其他的解决办法:

约定型

需要增加文件时先增加完空文件后立刻 checkin 一次,让别人每次改动 pbxproj 的时候改动之前 checkout 一次,保证有交叉时间是可能性最小

就是你先创建一个空文件,生成了一个引用后,就push一遍代码。然后让别人pull,让他在创建新文件之前就已经有了你创建的空文件和生成的引用,这样相当于在你之后创建新文件,而不是同时创建了。

解决型

xUnique

开源 GitHub 地址
xUnique 下载地址

注意,多人协作的时候,如果团队中的其中一个人使用了 xUnique,所有人就都要用 xUnique,否则 project.pbxproj 就会全乱掉。

参考

建议大家看看这篇文章,总结的很详细到位
https://bingozb.github.io/11.html

推荐阅读更多精彩内容