PowerShell で git merge を実行したら、黒い画面に英語のメッセージが並んだ編集画面に切り替わり、何を押しても元に戻らなくなった。

これは Git がマージの記録(マージコミット)のメッセージを書かせるために開いたテキストエディターで、私の環境では Vim というエディターだった。閉じ方さえ分かれば、すぐに終わらせられる。
結論: Esc → :wq → Enter で閉じる
一行目に書かれているメッセージ(Merge remote-tracking branch ... など)のままでよければ、次の順に押す。
- Esc キーを押す(何かの入力状態になっていても、これで抜ける)
- 半角で :wq と入力する(画面の一番下に :wq と表示される)
- Enter キーを押す
:wq は Vim の「保存して(w)閉じる(q)」という命令である。私はこれで画面が閉じてマージが終わり、そのまま git push まで進められた。
なぜエディターが開いたのか
私が実行したのは、別々に作業を進めていた2つのブランチを、順番に main に取り込む作業だった。
git fetch origin git merge --ff-only origin/claude/article32-opus-safeguard git merge origin/claude/article33-team-bedrock-switch git push origin main
1本目は、main の先にそのまま積むだけで済む(fast-forward)ので、エディターは開かなかった。2本目は、1本目と同じ地点から分かれていたため、2つの流れを合流させる「マージコミット」が新しく作られる。Git の公式ドキュメントによると、git merge はこのマージコミットを作る前にエディターを開いて、自動で作ったメッセージを編集できるようにしている。そのため、2本目のときだけ画面が切り替わった。
画面に書いてあること
画面に並んでいる英語は、次の意味である。
- 1行目(Merge remote-tracking branch ...): Git が自動で作ったマージのメッセージ。このまま保存すれば、これがマージコミットのメッセージになる
- # で始まる行: 説明書き。「# で始まる行は無視される」「メッセージを空にするとコミットは中止される」と書いてある
- 一番下の行: 編集しているファイル(.git/MERGE_MSG)の情報
マージをやめたいとき
画面の説明のとおり、メッセージを空にして保存すると、コミットは中止される。メッセージの行(1行目)を消してから、Esc → :wq → Enter と押せばよい。私はこの操作は試していないので、実際にやる場合は画面の説明と結果をよく確認してほしい。
次からエディターを開かずに済ませる方法
自動で作られたメッセージのままでよいなら、--no-edit を付けると、エディターを開かずにそのままマージできる(Git の公式ドキュメントにある方法)。
git merge --no-edit origin/claude/article33-team-bedrock-switch
また、Git が開くエディターは、core.editor という設定などで決まる(公式ドキュメントでは、環境変数 GIT_EDITOR、設定 core.editor、環境変数 VISUAL、環境変数 EDITOR の順に見る、とされている)。Vim に慣れていないなら、使い慣れたエディターを指定しておく手もある。
この記事のまとめ

- git merge で開いた画面はエディター(私の環境では Vim)。マージコミットのメッセージを書かせるために開く
- メッセージがそのままでよければ、Esc → :wq → Enter で閉じればマージが終わる
- やめたいときは、画面の説明のとおりメッセージを空にして保存する
- 次から開かないようにするなら git merge --no-edit


コメント