Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Git,如何为故事板和.xib文件设置.Git属性_Ios_Xcode_Git_Xib_Uistoryboard - Fatal编程技术网

Ios Git,如何为故事板和.xib文件设置.Git属性

Ios Git,如何为故事板和.xib文件设置.Git属性,ios,xcode,git,xib,uistoryboard,Ios,Xcode,Git,Xib,Uistoryboard,背景:git或任何其他SCM可以“成功”合并故事板、xib和pbxproj文件,因为它们的核心只是xml。有时,有些冲突可以通过通常的冲突解决策略来解决。但是xib和故事板是一些相当复杂的数据结构的序列化格式,所以有趣的开始了 与其他源代码一样,成功的合并并不能保证所有合并的更改都能正常工作。对于有问题的文件,git可以成功合并,但是当您试图打开它时,Xcode有时会显示“无法读取存档”错误,即,合并损坏了xib 我看到过关于让git ignore.xibs(不实用)或在.gittattribu

背景:git或任何其他SCM可以“成功”合并故事板、xib和pbxproj文件,因为它们的核心只是xml。有时,有些冲突可以通过通常的冲突解决策略来解决。但是xib和故事板是一些相当复杂的数据结构的序列化格式,所以有趣的开始了

与其他源代码一样,成功的合并并不能保证所有合并的更改都能正常工作。对于有问题的文件,git可以成功合并,但是当您试图打开它时,Xcode有时会显示“无法读取存档”错误,即,合并损坏了xib

我看到过关于让git ignore.xibs(不实用)或在.gittattributes中通过设置禁用diff的建议

*.xib -crlf -diff
从技术上讲,这解决了合并冲突/损坏的xib问题-但现在有人的更改丢失了

类似地,我看到的关于项目文件的最佳建议是merge=union in.gittributes:

*.pbxproj merge=union
问题:我已经搜索了很多次,似乎没有一个好的解决方案。有经验的人能告诉我在一些用例中会发生什么吗

  • 在项目中,我将一个文件从x重命名为y,并删除文件a。同时,另一个程序员提交了添加fileC和删除fileC的更改。合并的结果是什么?我确信实际的文件系统更改是正确的,但在Xcode navigator面板中:

    • 我能同时看到x和Y吗
    • fileA是否会重新出现,因为它仍在其他程序员的.pbxproj中
    • 文件还会在那里吗,因为它还在我的.pbxproj里
  • 如果git忽略了.xib文件-我是否至少会收到一个警告,说明文件已更改,并且未被处理


  • 现在我不会为项目文件或NIB设置任何特定的
    .gittributes

    合并对Xcode项目和XIB/故事板的并发更改的问题存在于每个有多个开发人员的团队中

    Xcode项目 处理Xcode项目冲突的一些技巧:

    • 采取合并的一侧,并在合并后手动应用其他更改。如果您删除了文件,它们将显示为红色,如果您需要添加它们,它们将可以添加
    • 将文件添加到目标时,它们将进入“编译源代码”构建阶段的底部。通过将其他人向上拖动到随机位置,避免与其他人发生冲突
    • 使用
      .xcconfig
      文件而不是生成设置部分。配置文件很容易合并
    如果有疑问,我最好的建议是选择合并的一方,放松,并重播您添加的内容

    XIB和故事板 近几个月来,XIB(以及故事板)的格式发生了重大变化。我发现附加的对象被附加到文件的内部集合中,合并可以很容易地完成。如果要对同一对象进行更改,可能需要手动进入

    来自Itty Bitty的应用程序突出了主要变化:

    这种新的XIB XML格式有很多好处:

    • XIB更小(代码行更少)
    • 开发人员可以轻松地读取XML并理解它在用户界面中指定的内容
    • 合并XIB现在不太可能导致破裂的XIB。在此之前,我们很少尝试合并XIB或故事板

    谢谢Jessedc。对于XIB和故事板,我想您提到的格式在最近几个月发生了显著变化意味着Xcode5?