Xcode自动更改故事板的框架值会引起Git合并冲突。如何解决?

6

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

<<<<<<< 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

我们从不更改 x 的值,而且我们始终提供整数值。显然,Xcode 会自动更改该值。

如何防止这种情况发生?

1个回答

3
您可以通过让Git相信文件内容没有更改来避免检查这样修改的值。
这可以通过一个clean脚本来实现,该脚本将负责仅保留x的整数值。
该脚本仅适用于.storyboard文件(如此处所述),并将替换“254.xxx”为“254”。
 sed -i 's/x=\"([0-9]+).*\"/x=\"\1\"/g'

通过该脚本恢复文件是通过内容过滤驱动器 自动化完成的,使用.gitattributes声明

https://istack.dev59.com/tumAc.webp
(图片来自《自定义 Git - Git 属性》,摘自《Pro Git 书籍》)

一旦在本地 Git 配置中声明了该内容过滤驱动器,它将在git commit时自动恢复文件。
或者即使 XCode 修改了该值,在git diff/git status中也会将该文件视为未更改。

请参阅“最佳实践 - Git+Build 自动化-保持配置分离”中的完整示例。


我在这里 https://regex101.com/ 测试正则表达式,但无论我输入 254.987"254.987"x="254.987",它都不会将其转换为 254,而是将其转换为我输入的相同内容。你有什么想法吗? - denis_lor
@denis_lor,你可以分享一下你使用的特定正则表达式和测试的regex101.com链接吗? - VonC
@denis_lor 我已经编辑了答案并修复了正则表达式:https://regex101.com/r/9BR5BC/1 - VonC
如果您输入 x="254.987"testtest,它会将所有内容都标记出来,包括 testtest - denis_lor
1
@denis_lor 这将与答案中的正则表达式一起工作,我已在 https://regex101.com/r/9BR5BC/2 中报告了它。 - VonC

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