ブランチを切り替えられないのはなぜですか?


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

#マージされていないパス:#(ステージングを解除するには「gitreset HEAD <file> ...」を使用)#(解像度をマークするには、必要に応じて「git add / rm <file> ...」を使用)#
lampShade

質問を編集してその情報を貼り付けてください。コメントでは判読できません。
マット

git reset {{currentBranchName}}その後git checkout . 、あなたの問題を解決します
muthukumar selvaraj 2018

これはあなたの質問に答えますか?Gitマージエラー
Henke 2020

回答:


96

git statusにリストされているマージを望まない場合は、これを試してください。

git reset --merge

これにより、インデックスがリセットされ、との間<commit>で異なる作業ツリー内のファイルが更新されますが、インデックスと作業ツリーの間で異なるファイルHEAD(つまり、変更が追加されていないファイル)は保持されます。

との間<commit>で異なるファイルにステージングされていない変更がある場合、リセットは中止されます。

これについての詳細-https: //www.techpurohit.com/list-some-useful-git-commands&Doc link- 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について理解するのに役立った2つのブログ投稿は次のとおりです。

  • Xcode4.5およびの RayWenderlich
  • 2008年からのオリバースティール


  • 6

    HEADでブランチをリセットできます

    git reset --hard branch_name
    

    次に、ブランチをフェッチし、ローカルからリモートにないブランチを削除します。

    git fetch -p 
    

    1

    ブランチを切り替える前に、保存されていない変更をコミットまたは破棄する必要があります。

    保存されていない変更が削除されることを意味する場合、Gitではブランチを切り替えることができません。


    エラーとgit status出力は、これがブランチの変更によって失われる作業ツリーの変更だけではないことを示しています。これらは、マージが失敗し、競合をインデックスで解決する必要があることを示しています。
    マークロンゲール

    1

    ファイルは両方によって変更されるため、どちらかによって追加する必要があります

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

    または、yoyrの変更を無視したい場合は、

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

    その後、ブランチを切り替えるだけでうまくいくはずです。

    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.