【Git】MERGING状態から抜け出す方法
チーム開発中にメンバーが何度か遭遇した困りごと。
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. 手動でファイルを修正する
コンフリクトが発生しているのであれば、競合箇所を手作業で修正する必要があります。
該当するファイルを見てみると、以下のような表示が見つかりました。
<<<<<<< HEAD
現在のブランチで保存されている内容
=======
topicブランチで保存されている内容
>>>>>>> topic
👆この表示がある場合、ここ競合してるよ、どっちを残す?ということなので、=======
の上下どちらの変更を反映させるか指定し、不要なテキストを全て削除します。(<<<<<<< HEAD
=======
>>>>>>> topic
この部分も消す。)
修正後、以下のコマンドで変更をステージングエリアに追加。
そしてコミットを実行します。
$ git add ファイル名
$ git commit
正常に変更内容が統合されていれば、今回の問題であったMERGING
の文字は表示されなくなるはずです。
2. マージをキャンセル
もう1つの方法としては、先ほど実行したマージをキャンセルし、変更内容を実行前の状態に戻すというものです。以下のコマンドを実行すると、進行中のマージを中止することができます。
$ git merge --abort
最後まで読んでいただきありがとうございました。
プラスの情報、修正点等ありましたら、ご連絡いただけますと幸いです。
参考リンク
今回の記事に関連する公式ドキュメントや参考情報です。
- Git - ブランチとマージの基本 - Git公式ドキュメント(マージとコンフリクトについて)
- Git のマージ競合 | Atlassian Git Tutorial - マージコンフリクトの詳細解説
-
git-merge – Git コマンドリファレンス(日本語版) -
git merge --abort
の詳細仕様
Discussion