从Bitbucket拉取代码至Xcode时遇冲突,info.plist解析报错求助
解决Xcode拉取Bitbucket代码时info.plist冲突及格式错误问题
我之前在团队协作中碰到过一模一样的问题——用Xcode拉取Bitbucket的代码时,info.plist出现冲突,手动合并后直接弹出格式错误提示。其实核心原因很简单:info.plist本质是XML格式的配置文件,Xcode自带的冲突编辑器对XML语法的校验不够严格,手动合并时很容易留下Git冲突标记、标签不闭合这类问题,直接导致系统无法解析。
下面是我亲测有效的解决步骤:
一、先做好备份,避免数据丢失
不管用什么方法处理,先在Finder里找到项目中的info.plist,复制一份存到桌面或者其他安全位置。毕竟这是App的核心配置文件,万一操作失误也能快速恢复。
二、用Git命令行处理冲突(最稳妥)
Xcode的可视化冲突工具对XML文件支持确实一般,不如用Git命令行来精准处理:
- 打开终端,切换到你的项目目录:
cd /你的项目路径 - 执行
git pull,此时会提示info.plist存在冲突 - 执行
git status确认冲突状态,确认info.plist处于both modified状态 - 执行
git mergetool,选择你熟悉的合并工具(比如vimdiff,或者安装了Beyond Compare的话选这个更直观) - 在合并工具里,仔细对比本地和远程的info.plist内容:
- 彻底删除所有Git冲突标记:
<<<<<<< HEAD、=======、>>>>>>> [远程分支名]这些行绝对不能留在文件里 - 确保XML标签成对出现,比如
<key>CFBundleVersion</key>后面必须跟着对应的<string>xxx</string>,<dict>要有</dict>闭合
- 彻底删除所有Git冲突标记:
- 合并完成后,执行
git add info.plist,然后git commit -m "Resolve info.plist conflicts"完成合并
三、如果已经在Xcode里弄乱了格式,手动修复XML
要是你已经在Xcode里尝试合并后出现格式错误,可以这样救回来:
- 右键点击项目里的
info.plist,选择Open As -> Source Code,切换到XML源码视图 - 先全局搜索并删除所有Git冲突标记(就是那些带
<<<<<<<的行) - 仔细检查XML语法:
- 检查每个标签是否闭合,比如有没有只写了
<array>没写</array>的情况 - 确保键值对格式正确,比如
<key>后面必须跟着对应的<string>、<integer>等类型标签 - 避免出现特殊字符未转义的情况(不过这个在info.plist里比较少见)
- 检查每个标签是否闭合,比如有没有只写了
- 保存文件后,切换回Open As -> Property List,如果能正常打开就说明修复成功了;要是还报错,对比之前备份的info.plist,找出语法错误的地方。
四、预防后续冲突的小技巧
为了避免再碰到这类问题,可以试试这几个方法:
- 团队成员修改info.plist前提前沟通,尽量不要同时修改同一配置项
- 把版本号、Build号这类经常变动的配置,放到Xcode的User-Defined Settings里,通过脚本自动同步到info.plist,减少直接修改文件的次数
- 拉取远程代码前,先确保本地的修改已经提交或者暂存,避免本地未提交的内容和远程代码冲突
内容的提问来源于stack exchange,提问作者Rashid Latif
相关产品推荐
相关产品推荐

