为什么不能切换分支?


81

我正在尝试在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 reset HEAD <文件> ...”取消登台)#(使用“ git add / rm <文件> ...”以适当地标记分辨率)#
lampShade

请编辑您的问题以粘贴该信息,该信息在注释中不可读。
马太福音

git reset {{currentBranchName}}然后git checkout . 会解决您的问题
muthukumar selvaraj

Answers:


95

如果您不想在git status中列出任何合并,请尝试以下操作:

git reset --merge

这将重置索引和工作树是之间是不同的更新文件<commit>HEAD,但保留那些(有还没有被添加修改IE)的索引和工作树之间的不同。

如果文件<commit>和索引之间的文件不同,并且索引未进行暂存更改,则重置将中止。

有关此的更多信息-https ://www.techpurohit.com/list-some-useful-git-commands和文档链接-https: //git-scm.com/docs/git-reset


53

您最终会both modified得出git status合并是否产生冲突的输出。在解决这些冲突之前,git不允许您更改分支。如果您编辑该文件,则应该在其中看到一些冲突标记-git手册中解决这些冲突的指南。(由于kernel.org目前处于关闭状态,因此您可以在此处找到该指南。)

或者,如果您认为合并是一个错误,则可以使用以下方法撤消合并: git reset --merge


19

如果您不关心git所说的出色更改,那么可以进行强制签出。

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


3
这正是我所需要的-我有一个测试分支,其中合并由于很多冲突而失败,我只想扔掉该分支。我无法回到良好的分支机构(结帐失败,并且git reset --merge也失败了)。但是checkout -f效果很好。
乍得

6

从远程更新新文件时,我收到了此消息,并且索引异常。试图修复索引,但通过Xcode 4.5,GitHub.app(103)和GitX.app(0.7.1)解析失败。因此,我这样做:

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

它绕过了git索引。

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

  • Ray Wenderlich在Xcode 4.5
  • 奥利弗·斯蒂尔(Oliver Steele),2008年



  • 1

    在切换分支之前,您需要提交或破坏所有未保存的更改。

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


    错误和git status输出指示这不仅仅是更改分支会丢失的工作树中的更改-它们指示合并失败并且必须在索引中解决冲突。
    马克·朗伊尔

    1

    由于文件都被修改,因此您需要添加

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

    或者,如果您想忽略同比变化,请执行

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

    之后,只需切换您的分支即可。

    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.