为什么我不能转换分支?

我试图在git中切换分支,但我得到这个错误信息:

error: you need to resolve your current index first 

我在xcode4下使用git

 git status # On branch DateCode # Unmerged paths: # (use "git reset HEAD <file>..." to unstage) # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate # no changes added to commit (use "git add" and/or "git commit -a") Frappuccinos-MacBook-Pro:whereami 

如果你不想在git状态中列出任何合并,试试这个:

 git reset --merge 

这将重置索引并更新工作树中<commit>HEAD之间不同的文件,但保留索引和工作树(即没有添加更改)之间不同的文件。

如果<commit>和索引之间的文件有不同的变化 – reset被中止。

更多关于这个 – https://git-scm.com/docs/git-reset

如果合并产生冲突,则最终会在git status输出中进行both modified 。 git不会让你改变分支,直到你解决了这些冲突。 如果你编辑这个文件,你会看到一些冲突标记 – 有一个解决git手册中的冲突的指南 。 (由于kernel.org目前处于closures状态,您可以在这里find该指南。)

或者,如果您认为合并是一个错误,您可以使用以下命令将其撤销: git reset --merge

当从远程更新新文件和索引失控时,我收到了这条消息。 试图修复索引,但通过Xcode 4.5解决,GitHub.app(103)和GitX.app(0.7.1)失败。 所以,我这样做了:

 git commit -a -m "your commit message here" 

它绕过了git索引。

两篇帮助我了解Git和Xcode的博客文章是:

  • 在Xcode 4.5和Ray上的Ray Wenderlich
  • 奥利弗斯蒂尔从2008年
  • 你可以用HEAD重置你的分支

     git reset --hard branch_name 

    然后取出分支并删除不在本地的分支,

     git fetch -p 

    如果你不关心git所说的变化,那么你可以做一个强制结账。

    git checkout -f {{insert your branch name here}}

    您需要在切换分支之前提交或销毁任何未保存的更改。

    Git不会让你切换分支,如果这意味着未保存的更改将被删除。

    由于文件被两者修改,所以您需要添加它

     git add Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate 

    或者如果你想忽略yoyr的变化,那就去做吧

     git reset HEAD Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate 

    之后,只需切换你的分支。这应该做的伎俩。