マージコンフリクト
CoddyのTerminalジャーニー「バージョン管理」セクションの一部 — レッスン 37/58。
もし両方のブランチが同じファイルの同じ行を変更した場合、Gitはどちらのバージョンを残すべきか判断できません。Gitはマージを一時停止し、あなたに決定を求めます。
競合したファイルには、両方のバージョンを示す特別なマーカーが表示されます:
<<<<<<< HEAD
the version on main
=======
the version on feature
>>>>>>> featureあなたの作業は、ファイルを手動で編集することです。1つのバージョンを選択するか、それらを組み合わせるか、あるいは新しく書き直してください。その後、すべてのコンフリクトマーカー(<<<、===、>>> の行)を削除します。
ファイルの内容が正しくなったら、それをステージングし、別のコミットでマージを完了させます:
git add notes.txt
git commit -m "Resolve merge conflict in notes"途中で気が変わった場合は、すべてを中止してマージ前の状態に戻すことができます:
git merge --abortチャレンジ
中級フォルダには、hello という行が含まれた notes.txt があります。
リポジトリを初期化し、最初のファイルをコミットしてください。alt ブランチを作成し、notes.txt を hi from alt と書き換えてコミットします。
main に戻り、notes.txt を hi from main と書き換えてコミットします。
alt を main にマージしようとしてください。マージはコンフリクトします。git merge --abort でマージを中止し、cat で notes.txt の内容を表示して、ファイルが main バージョンに戻っていることを確認してください。
チートシート
両方のブランチが同じ行を編集すると、Gitはマージを一時停止し、ファイルにコンフリクトマーカーを追加します:
<<<<<<< HEAD
the version on main
=======
the version on feature
>>>>>>> featureファイルを編集して希望の結果にし、すべてのマーカーを削除してから、ステージングしてコミットします:
git add notes.txt
git commit -m "Resolve merge conflict in notes"マージをキャンセルしてマージ前の状態に戻すには:
git merge --abort自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。