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
明らかに、ここに不可欠なものが欠けています...マージの意味について間違った考えを持っていますか?別のリモートマスター/ローカルマスターブランチを持つというこの問題を修正するにはどうすればよいですか?
エラーメッセージ:
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ステップで実行します。
しばらく前に同じ挑戦を繰り返しました。この問題は主に、リモートリポジトリからプルしようとしているときに、ローカルインスタンス上のファイルがリモートバージョンと競合している場合に発生します。IntelliJなどのIDEからgitを使用している場合、独自の変更を保持する場合、またはリモートバージョンの変更を上書きする場合に選択することができます。何も選択しないと、この矛盾に陥ります。あなたがする必要があるのは実行するだけです:
git merge --abort # The unresolved conflict will be cleared off
そして、あなたは休憩前にやっていたことを続けることができます。
私は同じ問題にぶつかり、このエラーを読んだときに笑ったりテーブルの上で頭を叩いたりすることを決めることができませんでした...
Gitが本当にあなたに伝えようとしているのは、「あなたはすでにマージ状態にあり、最初にそこで競合を解決する必要がある!」ということです。
マージしようとしましたが、競合が発生しました。その後、gitはマージ状態のままになり、他のコマンドでマージを解決したい場合、gitは新しいマージを実行したいと考えているため、現在のマージされていないファイルのためにこれを行うことはできません...
git merge --abort
でこの状態を抜けて、他のコマンドの実行を試みることができます。
私の場合、私はプルを試み、エラーが発生したときに手動で競合を解決したい...
これの別の潜在的な原因(Intellijが私のケースに関係していましたが、それが重要かどうかはわかりません):メインブランチから機能ブランチのブランチに変更をマージしようとしました。
言い換えると、次の配置で「メイン」を「現在」にマージします。
main
|
--feature
|
--current
すべての競合を解決し、GiTはマージされていないファイルを報告し、mainからfeatureにマージしてから、featureをcurrentにマージするまでスタックしました。