コンフリクトの解消
CoddyのTerminalジャーニー「バージョン管理」セクションの一部 — レッスン 38/58。
中断することが適切な判断である場合もありますが、ほとんどの場合は、実際にコンフリクトを解決してマージを完了させたいはずです。
コンフリクトの解消は、3つのステップからなる儀式です:
- 競合が発生したファイルを開きます。マーカーブロックを、使用したいバージョン(またはそれらの組み合わせ)に置き換えます。
- 解決したファイルを
git addでステージングします。 git commitでマージを完了させます。
スクリプトを使用して、解決済みの内容でファイルを直接上書きすることができます。これは、このレッスンでまさに行うことです(エディタは不要です)。
解決済みのファイルを git add するのを忘れると、コミットは失敗し、ファイルがまだ未マージとしてマークされていることが通知されます。
チャレンジ
中級notes.txt で、前のレッスンとまったく同じようにコンフリクトを発生させます:
mainブランチで、内容をhelloとして最初のコミットを行いますaltブランチで:内容をhi from altに変更し、コミットしますmainブランチに戻り:内容をhi from mainに変更し、コミットしますgit merge altを実行します(コンフリクトが発生します)
notes.txt を hi from both という行で上書きしてコンフリクトを解消します。ファイルをステージングし、Resolve notes というメッセージでマージを完了させます。notes.txt の最終的な内容を出力してください。
チートシート
マージコンフリクトを解決するには:
- コンフリクトが発生したファイルを編集します。コンフリクトマーカーを削除し、必要な内容を残します。
- 解決したファイルをステージングします:
git add <file> - マージを完了します:
git commit
git add notes.txt
git commit -m "Resolve conflict"git add をスキップすると、ファイルが未マージとしてマークされたままになり、コミットは失敗します。
自分で試してみよう
ターミナル
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。