由于与UserInterfaceState.xcuserstate冲突,无法合并。

15

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

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

4个回答

18

只需使用以下命令删除文件:

git rm --cached *xcuserstate

然后进行本地提交,选择包括.DS_Store的其他信息作为杂项消息。

放弃所有其他更改。

拉取(pull)

推送(push)

完成 :)


1
请您能否更加精确一些,因为我对 xCode 项目目录结构不太熟悉。例如,我的应用程序名为 Twoater。
  • 那么,我应该去哪里输入您上面提到的第一个命令呢?
  • 我如何进行本地提交并选择 .DS_Store 文件?
  • 我如何放弃所有其他更改?
  • 等等。
- Guy
所以我解决了第一行的问题,结果是这样的:Guys-Air:guy.xcuserdatad guy$ git rm --cached *xcuserstate Twoater.xcodeproj/project.xcworkspace/xcuserdata/guy.xcuserdatad/UserInterfaceState.xcuserstate: needs merge rm 'Twoater.xcodeproj/project.xcworkspace/xcuserdata/guy.xcuserdatad/UserInterfaceState.xcuserstate' - Guy
然后我尝试进行本地提交:Guys-Air:guy.xcuserdatad guy$ git commit -m '.DS_Store banished!' U Twoater.xcodeproj/xcuserdata/guy.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist 错误:由于您有未合并的文件,因此无法进行“提交”。 提示:在工作树中修复它们, 提示:然后使用“git add/rm <file>”标记解决方案并进行提交, 提示:或使用“git commit -a”。 致命错误:由于存在未解决的冲突而退出。 - Guy
@Harry,请使用Sourcetree,并忽略像ds store、breakpoints_v2等文件。 - Ankit Sachan

5

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

简单地调整Xcode窗口大小将导致此文件更改,并被您的源代码控制系统标记为已修改。您可以使您的SCM系统忽略对于项目本身不重要的特定文件。

Git:Git忽略Xcode项目文件
Subversion:在Xcode 4中忽略SVN模式


它支持两种,所以我发布了两个链接。我不知道你在用什么。但是如果你也不知道,那你可能正在使用git,因为这是Xcode的默认选项。忽略文件位于你的主文件夹(~)中。如果它们不存在,你必须创建它们。注意,这些是隐藏的文件夹(以.开头),所以你通常在Finder中看不到它们。在终端上尝试ls -a - DrummerB
2
不幸的是,它仍然无法正常工作。我按照上面的链接在我的主目录中创建了一个.gitignore文件。但每次我尝试切换分支或合并时,它都会一直要求我在合并或切换分支之前提交UserInterfaceState.xcuserstate文件的更改。换句话说,.gitignore没有忽略那个文件。我也尝试重新启动xcode。但没有帮助。有什么想法我可能错过了什么吗? - JeffB6688
如果您已经提交了该文件,请尝试删除它(git rm)。像所有破坏性操作一样,如果您不确定自己在做什么,请小心并创建备份。 - DrummerB
经过大量的实验,我成功地使用“git rm -rf project.xcworkspace/xcuserdata”删除了该文件。因此,在我正在工作的分支上,它几乎立即回来了,需要提交的文件。你能想到为什么.gitignore似乎无法防止xcode考虑这个文件吗?我在我的主目录中创建了这个文件。 - JeffB6688
你在gitignore文件中到底添加了什么?尝试加入 *.pbxuser。这样就可以忽略所有用户特定数据了。 - DrummerB
显示剩余5条评论

0

我尝试了所有的命令,但都没有帮助我。所以我想在目录中删除它。

右键单击xcode项目文件 -> 显示包内容 -> project.xcworkspace -> 右键单击xcworkspace文件 -> 显示包内容 -> xcuserdata -> mac"mac是系统名称".xcuserdatad -> UserInterfaceState.xcuserstate -> 在这里删除你的头痛,我的意思是UserInterfaceState.xcuserstate文件。

然后使用命令提交并按照通常的程序进行操作。


0

简单地运行以下CMD命令-

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

就像我的情况一样:

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

谢谢


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