Xcode改变故事板的帧值自动导致git合并冲突.怎么解决?

Yi *_*ang 6 git xcode uistoryboard

每当我合并其他团队成员的iOS objc项目时,我都会遇到一些奇怪的冲突:

<<<<<<< HEAD
    <rect key="frame" x="254.00000003476939" y="0.0" width="63" height="21"/>
=======
    <rect key="frame" x="254.00000010362709" y="0.0" width="63" height="21"/>
>>>>>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

我们永远不会改变x的值,我们总是给出像值一样的整数.显然,Xcode会自动更改该值.如何防止这种事情发生?

Von*_*onC 3

您可以通过让 Git 相信文件内容没有更改来避免签入此类修改后的值。

这可以通过一个clean脚本来实现,该脚本将负责仅保留 x 的整数值。
该脚本将仅应用于.storyboard文件(如此处所述),并且必须将“254.xxx”替换为“254”。

 sed -i 's/x=\"([0-9]+).*\"/x=\"\1\"/g'
Run Code Online (Sandbox Code Playgroud)

通过该脚本恢复文件是通过内容过滤器驱动程序使用.gitattributes声明自动进行的。

https://i.stack.imgur.com/tumAc.png
(图片来自《Pro Git book 》中的《自定义 Git - Git 属性》))

一旦您在本地 git 配置中声明了该内容文件管理器驱动程序,它将自动在 上git commit恢复该文件。或者它会认为/
上的文件未更改,即使 XCode 修改了该值。 git diffgit status

请参阅“最佳实践 - Git + 构建自动化 - 保持配置独立”中的完整示例。