コンフリクトは、「なかったこと」にできる

初めてのコンフリクト。ターミナルに CONFLICT の文字が並び、ファイルを開けば <<<<<<< や ======= という見慣れない記号がびっしり。「うわ、リポジトリ壊しちゃった…?」と一瞬ヒヤッとする。安心してほしい。何も壊れていない。Git はマージを途中で止めて、あなたの判断を待っているだけだ。
もし「今はやっぱりやめておきたい」と思ったら、git merge --abort と打つだけでいい。これでマーカーは消え、ファイルはマージを始める前の状態に丸ごと巻き戻る(マージの前に、自分の変更をコミットか stash しておけば)。まるでマージなんてしなかったかのように、まっさらな状態へ戻れる。Git は勝手に上書きして突き進んだりはしない。必ず手前で立ち止まって人間に判断を委ね、いつでも引き返せる退避路を用意してくれている。これが Git の「安全装置」の正体だ。
ただし --abort は「出直したい・今はやらない」ときの退避コマンドで、コンフリクトを解決する正攻法ではない。使えるのはマージの途中、つまり解決をコミットする前まで。それでも「いざとなればマージごとなかったことにできる」と知っているだけで、コンフリクトはぐっと怖くなくなる。深呼吸して、落ち着いてマーカーと向き合えばいい。
