📑

【Git】MERGING状態から抜け出す方法

2023/12/28に公開

はじめに

チーム開発中にメンバーが何度か遭遇した困りごと。

ec2-user:~/environment/test_app (tarou|MERGING) $
                                      ^^^^^^^^
Git触ってたら作業ブランチ名の横になんか出た!!

mergeうまくいかないしなんか出てきたなにこれ。メンターさんとメンバーが話しているのを聞いていたが、見聞きしているだけではピンと来ないので自分の手元の環境でも試してみた。

(gitでブランチを切る際のブランチ名には命名規則があるらしいですが今回のチーム開発では各々自分の名前で作成したのでそこは流します。)

前提

・ Ruby-3.1.2
・ Rails 6.1.7.6
・ OS: Windows 10
・ 開発環境: Cloud9

MERGINGって何者?

MERGINGというのは、異なるGitブランチの変更内容を統合する作業のことをいう。

ec2-user:~/environment/test_app (tarou|MERGING) $
                                      ^^^^^^^^

今回作業ブランチ名の横に出ているMERGINGというのは、「Gitブランチでのマージ作業(MERGING)が進行中ですよ」ということを表している。

なぜ表示されるのか

表示される原因として考えられるのは「マージが正しく終了せずに中断された」という状況。
以下2点が可能性として挙げられる。

  • マージの手順を間違えた
  • マージの競合(コンフリクト)が発生している

解決策

先ほど可能性として挙げた2点をもとに解決策を考えていこう。
まず問題点を見つけ出すため、以下のコマンドを実行する。
これにより、現在のGitブランチの状態やマージの問題を確認することができる。

$ git status

1. 手動でファイルを修正する

コンフリクトが発生しているのであれば、競合箇所を手作業で修正する必要がある。
該当するファイルを見てみると、以下のような表示が見つかる。

conflictが発生しているファイル
<<<<<<< HEAD
 現在のブランチで保存されている内容
=======
 topicブランチで保存されている内容
>>>>>>> topic

👆ここ競合してるよ、どっちを残す?とのことなので、=======の上下どちらの変更を反映させるか指定し、不要なテキストを全て削除。(記号も消す⇒ <<<<<<< HEAD ======= >>>>>>> topic
修正後、再度マージできるようになる。正常に変更内容が統合されれば、今回の問題であったMERGINGの文字は表示されなくなる。

2. マージをキャンセル

もう1つの方法としては、先ほど実行したマージをキャンセルし、変更内容を実行前の状態に戻すというもの。以下のコマンドを実行すると、進行中のマージを中止することができる。

$ git merge --abort

最後まで読んでいただきありがとうございました。

プラスの情報、修正点等ありましたら、ご連絡いただけますと幸いです。

Discussion