【问题标题】:Why can I not switch branches?为什么不能切换分支?
【发布时间】:2011-08-25 13:19:01
【问题描述】:

我正在尝试在 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

【问题讨论】:

  • # Unmerged paths: # (use "git reset HEAD ..." to unstage) # (use "git add/rm ..." 酌情标记分辨率) #
  • 请编辑您的问题以粘贴该信息,它在 cmets 中不可读。
  • git reset {{currentBranchName}} 然后git checkout . 会解决你的问题
  • 这能回答你的问题吗? Git merge errors

标签: git xcode4


【解决方案1】:

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

git reset --merge

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

如果&lt;commit&gt; 和索引之间不同的文件有未暂存的更改 -- 将中止重置。

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

【讨论】:

    【解决方案2】:

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

    或者,如果您认为合并是错误的,您可以通过以下方式撤消它:git reset --merge

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这正是我所需要的——我有一个测试分支,其中一个合并失败并且有很多冲突,我只是想扔掉这个分支。我无法回到一个好的分支(结帐失败,git reset --merge 也失败了)。但是checkout -f 效果很好。
      【解决方案4】:

      我从远程更新新文件时收到此消息,并且索引出现问题。尝试修复索引,但通过 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
    • 【讨论】:

        【解决方案5】:

        你可以用 HEAD 重置你的分支

        git reset --hard branch_name
        

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

        git fetch -p 
        

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

          • 错误和git status 输出表明这不仅仅是工作树中的更改会因更改分支而丢失——它们表明合并失败并且必须解决冲突索引。
          【解决方案7】:

          由于双方都修改了文件,所以需要自己添加

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

          或者,如果您想忽略 yoyr 的变化,那么就这样做

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

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

          【讨论】:

            猜你喜欢
            • 2020-06-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-06
            • 1970-01-01
            相关资源
            最近更新 更多