web-dev-qa-db-ja.com

マージされていないファイルがあるため、Gitマージはできません

GITは、役に立たないエラー警告で私を混乱させ続けています:(これは本当に価値があります:

「マージされていないファイルがあるため、gitマージはできません」

私の状況:githubのマスターブランチは(ブラウザーで直接)編集されましたが、ローカルのマスターブランチも編集されました。

愚かにも、2つのバージョンを単純にマージして実行できると思っていましたが、残念ながらマージできません-ファイルがマージされていないためです。

git merge remote/master

結果として

error: merge is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

したがって、ローカルの変更を追加してコミットし、再度マージしようとすると、次のようになります:

merge: remote/master - not something we can merge

明らかに、ここに不可欠なものが欠けています...マージの意味について間違った考えを持っていますか?別のリモートマスター/ローカルマスターブランチを持つというこの問題を修正するにはどうすればよいですか?

19
Kokodoko

エラーメッセージ:

merge:リモート/マスター-マージできるものではありません

gitはremote/masterを認識しないと言っています。これは、おそらく「リモート」という名前の「リモート」がないためです。 「Origin」という名前の「リモート」があります。

「リモート」は、GitサーバーへのURLのエイリアスと考えてください。 masterは、ローカルでチェックアウトされたブランチのバージョンです。 Origin/masterは、Gitサーバーから取得した(ダウンロードした)masterの最新バージョンです。 fetchは、ブランチの「Origin/x」バージョンのみを更新するため、常に安全です。

したがって、masterブランチを再び同期するには、最初にgitサーバーから最新のコンテンツをダウンロードします。

git fetch

次に、マージを実行します。

git merge Origin/master

...しかし、おそらくより良いアプローチは次のようになります:

git pull Origin master

pullコマンドは、fetchおよびmergeを1ステップで実行します。

6
Jonathan.Brink

しばらく前に同じ挑戦を繰り返しました。この問題は主に、リモートリポジトリからプルしようとしているときに、ローカルインスタンス上のファイルがリモートバージョンと競合している場合に発生します。IntelliJなどのIDEからgitを使用している場合、独自の変更を保持する場合、またはリモートバージョンの変更を上書きする場合に選択することができます。何も選択しないと、この矛盾に陥ります。あなたがする必要があるのは実行するだけです:

git merge --abort # The unresolved conflict will be cleared off

そして、あなたは休憩前にやっていたことを続けることができます。

5
Mosaku Abayomi

私は同じ問題にぶつかり、このエラーを読んだときに笑ったりテーブルの上で頭を叩いたりすることを決めることができませんでした...

Gitが本当にあなたに伝えようとしているのは、「あなたはすでにマージ状態にあり、最初にそこで競合を解決する必要がある!」ということです。

マージしようとしましたが、競合が発生しました。その後、gitはマージ状態のままになり、他のコマンドでマージを解決したい場合、gitは新しいマージを実行したいと考えているため、現在のマージされていないファイルのためにこれを行うことはできません...

git merge --abortでこの状態を抜けて、他のコマンドの実行を試みることができます。

私の場合、私はプルを試み、エラーが発生したときに手動で競合を解決したい...

1
Tobias Neis

これの別の潜在的な原因(Intellijが私のケースに関係していましたが、それが重要かどうかはわかりません):メインブランチから機能ブランチのブランチに変更をマージしようとしました。

言い換えると、次の配置で「メイン」を「現在」にマージします。

main
  |
  --feature
      |
      --current

すべての競合を解決し、GiTはマージされていないファイルを報告し、mainからfeatureにマージしてから、featureをcurrentにマージするまでスタックしました。

0