3

我有一个项目我一直在 Xcode 4.4.1 中工作,并想回到以前的分支。(注意分支并不复杂,而是代表线性发展)

当我选择上一个分支时出现警告

UserInterfaceState.xcuserstate: warning: Merge conflict: File still marked as conflicted

一切看起来都很好,但是所有的构建和运行菜单项都是灰色的,所以我什么也做不了。

我试图恢复到最新的分支,这看起来不错,但仍然存在合并冲突 MyProject.xcodeproj/project.xcworkspace/xcuserdata/ian.xcuserdatad/UserInterfaceState.xcuserstate:警告:合并冲突:文件仍标记为冲突

我尝试了 git status,但没有帮助

# Unmerged paths:
...
#   deleted by them:    MyProject.xcodeproj/project.xcworkspace/xcuserdata/ian.xcuserdatad/UserInterfaceState.xcuserstate
#
# Changes not staged for commit:
...
#
#   deleted:    MyProject.xcodeproj/xcuserdata/ian.xcuserdatad/xcschemes/QuollEyeTree.xcscheme

我尝试了一个 git reset HEAD,但这似乎没有帮助,我不知道从这里去哪里。

Git 可以方便地根据以前的版本检查代码,但每当我尝试交换版本时就会遇到麻烦。

当我尝试创建工作区并添加另一个项目时,我当前的问题似乎更加严重。原始项目是在 Xcode 3 下创建的,项目和文件直接位于项目目录下。

编辑 - 已解决

下面的答案没有解决问题,但都有帮助。

我从项目目录中保存了我的代码,删除了最新的分支

git reset --hard HEAD~1

然后将更改的文件复制回项目目录

我还更新了我的 .gitignore (我以为我以前做过)

4

4 回答 4

16

在解决我的冲突后,我遇到了同样的问题,这就是我解决它的方法。如果您使用 Xcode 来跟踪您的 git 存储库,请尝试以下操作。1.我解决了所有的冲突,然后保存了解决的文件。2. 转到文件 -> 源代码管理 -> 标记为已解决

Voila Xcode 不再将这些文件识别为有冲突。希望这对某人有用。

于 2013-07-15T23:55:57.953 回答
5

跑步

git mergetool 

解决冲突为我解决了问题。

作为旁注,我使用 Command-D 导航到冲突,在 FileMerge 的右下角选择一侧,然后在完成保存并退出后使用 Command-S Command-Q(在 Mac 上)。

于 2013-04-19T15:21:42.757 回答
5

当存在合并冲突时,您必须首先解决它。(好吧,也许您可​​以运行git merge --abort以恢复)。

所以这个过程是你打开你的冲突文件,你寻找冲突,解决它(编辑冲突的行),然后保存你的文件,添加它(使用git add -u)并提交它。

然后你可以在一个干净的工作目录上工作。

顺便说一句,冲突可能看起来像:

<<<<<<< yours:sample.txt
Conflict resolution is hard;
let's go shopping.
=======
Git makes conflict resolution easy.
>>>>>>> theirs:sample.txt

参考:http ://www.kernel.org/pub/software/scm/git/docs/git-merge.html

于 2012-08-30T08:57:18.317 回答
1

首先,养成添加*.xcuserstate和模式以忽略其他用户特定项目文件到您的.gitignore. .gitignore 文件有一个流行的 github 存储库,其中一个用于 Xcode 项目。

除了解决合并冲突(如前所述)之外,您还应该养成一个好习惯,在检出不同的头(分支、标签等)时隐藏您的更改。

于 2012-08-30T09:07:47.793 回答