为什么我不能切换分支?

问题描述 投票:73回答:7

我正在尝试在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 xcode4
7个回答
89
投票

如果您不想要git status中列出的任何合并,请尝试此操作:

git reset --merge

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

如果<commit>和索引之间不同的文件具有未分阶段的更改 - 重置将中止。

更多关于这个 - https://www.techpurohit.com/list-some-useful-git-commands和Doc链接 - https://git-scm.com/docs/git-reset


53
投票

如果合并产生冲突,你最终会在both modified的输出中使用git status。在您解决了这些冲突之前,git不允许您更改分支。如果您编辑该文件,您应该会看到一些冲突标记 - 有一个guide to resolving those conflicts in the git manual。 (由于kernel.org目前已关闭,您可以找到该指南here。)

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


14
投票

如果您不关心git所说的未完成的更改,那么您可以进行强制检查。

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


6
投票

你可以用HEAD重置你的分支

git reset --hard branch_name

然后获取分支并删除不在本地远程的分支,

git fetch -p 

5
投票

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

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

它绕过了git索引。

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

  • Ray Wenderlich on Xcode 4.5
  • Oliver Steele from 2008

  • 1
    投票

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

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


    1
    投票

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

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

    或者,如果您想忽略您的更改,那么请执行此操作

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

    之后只需切换你的分支。这应该可以解决问题。

    © www.soinside.com 2019 - 2024. All rights reserved.