【问题标题】:Cannot Merge due to conflict with UserInterfaceState.xcuserstate由于与 UserInterfaceState.xcuserstate 冲突而无法合并
【发布时间】:2012-12-01 23:32:13
【问题描述】:

我创建了一个分支并进行了一系列更改。我提交了更改,然后将更改存档。然后我切换到主分支并尝试进行合并。它说我有未提交的更改。所以我在 master 分支上做了一个提交,看看它在说什么。它说有一个名为 UserInterfaceState.xcuserstate 的文件被修改。所以我提交了更改(不确定更改是什么)。然后我再次尝试合并。然后它会打开一个合并窗口并指示与 UserInterfaceState.xcuserstate 存在冲突。所以我回到分支,发现现在需要提交同一个文件。这以前没有出现过。所以我提交了它并回到了主分支。我再次尝试合并,但由于未提交的更改而无法合并。果然,再次需要提交 UserInterfaceState.xcuserstate。我提交并尝试合并。冲突的同样问题。这是一个恶性循环。

此文件是什么以及如何解决报告的冲突。它没有显示在我的项目导航窗口中。此外,它不在 unix 文件系统中。我完全被困住了。建议?我正在使用 xcode 4.5.2

【问题讨论】:

    标签: xcode commit merge-conflict-resolution


    【解决方案1】:

    UserInterfaceState.xcuserstate 是 Xcode 保存 GUI 状态的地方,例如窗口位置、打开的选项卡、项目检查器中的展开节点等。

    只需调整 Xcode 窗口的大小,就会导致该文件发生更改,并被您的源代码控制系统标记为已修改。您可以让您的 SCM 系统忽略对项目本身不重要的特定文件。

    Git:Git ignore file for Xcode projects
    颠覆:SVN ignore pattern with Xcode 4

    【讨论】:

    • 您的链接引用的这些文件在哪里:.gitignore 和 .subversion。他们不在 ~ 和链接建议。另外,由于这些链接指的是 git,xcode 是否将 git 用于其 SCM?
    • 两者都支持,这就是我发布两个链接的原因。不知道你用的是什么。但如果你也不知道,你可能正在使用 git,因为这是 Xcode 默认使用的。忽略文件位于您的主文件夹 (~) 中。如果它们不存在,则必须创建它们。请注意,这些是隐藏文件夹(以 . 开头),因此您通常不会在 Finder 中看到它们。在终端上尝试ls -a
    • 不幸的是,它仍然不起作用。我按照上面的链接在我的主目录中创建了一个 .gitignore 文件。但是每次我尝试切换分支或合并时,它总是希望我在合并或切换分支之前提交对 UserInterfaceState.xcuserstate 文件的更改。换句话说, .gitignore 不会忽略该文件。我也尝试过重新启动 xcode。那没有帮助。有什么想法我可能会错过吗?
    • 如果您已经提交了该文件,请尝试将其删除 (git rm)。与破坏性操作一样,如果您不确定自己在做什么,请小心并创建备份。
    • 根据上面链接中的建议,我也已经尝试过这样做。我在 UserInterfaceState.xcuserstate 上尝试了“git rm”和“git rm --cached”。在任何一种情况下,我都会收到以下错误之一:“致命:pathspec 'UserInterfaceState.xcuserstate' 不匹配任何文件”或“致命:pathspec '.xcodeproj/UserInterfaceState.xcuserstate' 不匹配任何文件”。实际错误取决于我在目录结构中输入命令的位置。我应该在哪里执行命令?
    【解决方案2】:

    只需使用删除文件

    git rm --cached *xcuserstate

    然后选择带有其他消息的 .DS_Store 进行本地提交

    放弃所有其他更改

    完成:)

    【讨论】:

    • 由于我不熟悉底层的 xCode 项目目录结构,请您说得更准确些。例如我的应用程序称为 Twoater。 - 那么我会去哪里输入你上面提到的第一个命令? - 如何选择 .DS_Store 进行本地提交 - 如何丢弃所有其他更改 - 等等。
    • 所以我想出了如何做第一行,结果是这样的: Guys-Air:guy.xcuserdatad guy$ git rm --cached *xcuserstate Twoater.xcodeproj/project.xcworkspace/xcuserdata/guy .xcuserdatad/UserInterfaceState.xcuserstate: 需要合并 rm 'Twoater.xcodeproj/project.xcworkspace/xcuserdata/guy.xcuserdatad/UserInterfaceState.xcuserstate'
    • 然后我尝试进行本地提交: Guys-Air:guy.xcuserdatad guy$ git commit -m '.DS_Store banished!' U Twoater.xcodeproj/xcuserdata/guy.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist 错误:“提交”是不可能的,因为您有未合并的文件。提示:在工作树中修复它们,提示:然后使用 'git add/rm ' 作为提示:适合标记分辨率并进行提交,提示:或使用 'git commit -a'。致命:由于未解决的冲突而退出。
    • @Harry 请使用 Sourcetree 并忽略 ds store、breakpoints_v2 等 fike
    【解决方案3】:

    我尝试了所有命令对我没有帮助。所以我想在目录中删除。

    右击xcode项目文件->显示包内容->project.xcworkspace->右击xcworkspace文件->显示包内容->xcuserdata->mac"mac is an system name".xcuserdatad - > UserInterfaceState.xcuserstate -> 在这里删除你的头疼我的意思是 UserInterfaceState.xcuserstate 文件。

    然后使用命令提交并照常执行。

    【讨论】:

      【解决方案4】:

      在CMD下简单运行-

      git rm --cached [在此处输入您的 UserInterfaceState.xcuserstate 路径,您可以从终端警告中复制并粘贴路径]

      就我而言:

      git rm --cached CabAppUser.xcworkspace/xcuserdata/shinewebsolutions.xcuserdatad/UserInterfaceState.xcuserstate

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多