与其他源代码一样,成功合并并不能保证所有合并的更改一起正常工作.对于有问题的文件,git可以成功合并,但是当您尝试打开它时,Xcode有时会显示“无法读取存档”错误 – 即合并损坏了xib.
我已经看到有关git ignore .xibs(不实用)的建议,或者.gitattributes通过设置禁用diff
*.xib -crlf -diff
从技术上讲,它修复了合并冲突/损坏的xib问题 – 但现在有人的更改丢失了吗?
同样,我在项目文件中看到的最佳建议是.gitattributes中的merge = union:
*.pbxproj merge=union
问题:我搜索了很多,似乎没有一个好的解决方案.有经验的人能告诉我在一些用例中会发生什么吗?
>在项目中,我将文件从x重命名为y,并删除fileA.同时,另一位程序员提交了更改以添加fileC并删除fileD.合并的结果是什么?我确定实际的文件系统更改是正确的,但在Xcode导航器面板中:
>我会看到x和Y吗?
> fileA会重新出现,因为它还在其他程序员的.pbxproj中吗?
> fileD仍然存在,因为它仍然在我的.pbxproj中吗?
解决方法
将并发更改合并到Xcode项目和xib / storyboard的问题存在于具有多个开发人员的每个团队中.
Xcode项目
处理Xcode项目冲突的一些技巧:
>获取合并的一侧,并在合并后手动应用其他更改.如果你删除了文件,它们将是红色的,如果你需要添加它们,它们将可以添加.
>向目标添加文件时,它们将位于“编译源”构建阶段的底部.通过将此列表拖到随机位置,避免与其他人发生冲突.
>使用.xcconfig文件到configure your projects而不是构建设置部分.配置文件很容易合并.
如果有疑问,我最好的建议是采取合并的一方,放松,并重播你的添加.
XIB和故事板
最近几个月,XIB(及其故事板)的格式发生了重大变化.我发现其他对象被附加到文件的内部集合中,并且可以轻松地进行合并.如果您要对同一个对象进行更改,则可能需要手动进入.
来自Itty Bitty Apps的This post强调了主要变化:
The benefits of this new XIB XML format are many fold:
- XIBs are much smaller (fewer lines of code).
- A developer can easily read the XML and understand what it specifies in the user interface.
- Merging XIBs is now much less likely to lead to broken XIBs. Before we would rarely even bother to try and merge a XIB or Storyboard.