为什么 git 会反复添加和删除故事板<classes>部分?



保存情节提要并将更改提交到 git 时,很有可能整个<classes>部分将从源代码管理 (git) 中删除或添加到源代码管理 (git) 中。我在命令行上使用git,而不是XCode集成UI。

首先它看起来像这样:

+    <classes>
+        <class className="CPTGraphHostingView" superclassName="UIView">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/CPTGraphHostingView.h"/>
+        </class>
...
+    </classes>

在下一次提交中,它看起来像这样:

-    <classes>
-        <class className="CPTGraphHostingView" superclassName="UIView">
-            <source key="sourceIdentifier" type="project" relativePath="./Classes/CPTGraphHostingView.h"/>
-        </class>
...
-    </classes>

为什么会这样,更重要的是:我怎样才能阻止这种情况?

(这个答案是基于个人经验,不是正式的)

.storyboard xml 文件中的classes部分列出了项目中的所有视图控制器,以便

  1. 当您在界面生成器中选择 UI 元素时,允许助理编辑器显示正确的源文件,并且
  2. 允许身份检查器(右侧面板)显示自定义类的选项。

我想这部分是一个缓存,当上面列出的两种用途都有一段时间没有使用时,就会停用。

首先出现此部分的事实意味着可以安全地忽略它,因为它是根据需要自动生成的。如果已提交它,并随后在 diff 上显示为已删除,请打开身份检查器,下拉"自定义类"下可用的类列表,然后再次查看整个部分的存在方式。

根据我的经验,仅当您打开情节提要并出现与类存在相关的错误时,才会发生删除。这方面的一个例子是在尚未解决合并冲突时打开情节提要。一个或多个类可能无法分析。在这种情况下,接口构建器似乎删除了整个部分,而不仅仅是有问题的类。

对我来说,在补丁准备就绪后再次打开故事板很容易修复,以防我看到删除。如果所有问题都已解决,则会重新生成该部分。如果不是,则意味着我的项目设置有问题,无论如何我都不应该提交。

相关内容

最新更新