【Git】git mergeで開いたエディター(Vim)の閉じ方|Esc→:wq→Enterで終わる

スポンサーリンク
Git
スポンサーリンク

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

git merge を実行したら開いた Vim の画面。Merge remote-tracking branch というメッセージが表示されている

これは Git がマージの記録(マージコミット)のメッセージを書かせるために開いたテキストエディターで、私の環境では Vim というエディターだった。閉じ方さえ分かれば、すぐに終わらせられる。

結論: Esc → :wq → Enter で閉じる

一行目に書かれているメッセージ(Merge remote-tracking branch ... など)のままでよければ、次の順に押す。

  1. Esc キーを押す(何かの入力状態になっていても、これで抜ける)
  2. 半角で :wq と入力する(画面の一番下に :wq と表示される)
  3. 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

参考

コメント

タイトルとURLをコピーしました