我有一个我在Xcode 4.4.1中工作的项目,并想回到之前的分支。 (注意分支并不复杂,但代表线性发展)
当我选择上一个分支时,有一个警告
UserInterfaceState.xcuserstate: warning: Merge conflict: File still marked as conflicted
一切看起来都不错,但所有构建和运行菜单项都是灰色的,所以我什么也做不了。
我试图恢复到最新的分支,这看起来还不错,但仍然存在合并冲突 MyProject.xcodeproj / project.xcworkspace / xcuserdata / ian.xcuserdatad / UserInterfaceState.xcuserstate:警告:合并冲突:文件仍标记为冲突
我尝试过git状态,但没有帮助
# 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(我之前认为我曾做过)
答案 0 :(得分:16)
解决冲突后我遇到了同样的问题,这就是我修复它的方法。 如果您使用Xcode跟踪您的git repo,请尝试以下操作。 1.我解决了所有冲突,然后保存了已解决的文件。 2.转到文件 - >源控制 - >标记为已解决
Voila Xcode不再将这些文件识别为存在冲突。希望这适用于某人。
答案 1 :(得分: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
答案 2 :(得分:4)
正在运行
git mergetool
并解决冲突为我解决了问题。
作为附注,我使用Command-D导航到冲突,在FileMerge的右下角选择一侧,然后在完成保存并退出后在Command-S Command-Q(在Mac上)。
答案 3 :(得分:1)
首先,养成添加*.xcuserstate
和模式的习惯,以忽略其他特定于用户的项目文件到.gitignore
。有一个流行的github repo for .gitignore文件,包括一个用于Xcode项目的文件。
除了解决合并冲突(如上所述)之外,你还应该养成一个好习惯,在结帐不同的头(分支,标签等)时隐藏你的更改。