今回はターミナルでプッシュができない事態が発生し、その解決方法として色々なコマンドを叩いていたのですが、その中でgit merge origin/main
を叩いた際にExiting because of an unresolved conflict.
が発生したので、その解決方法をご紹介します!
#エラー内容
$ git merge origin/main
error: Merging is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
どうやらコンフリクト起きているみたいです。
コンフリクト
:「衝突」の意味で、ファイル上で「自分の作業」と「他人の作業」が重複してしまっている状態のことです。
#解決手順
解決までの手順は以下の通りです!
1.git log --oneline --graph --all
でブランチの一覧を取得し確認
2.git status
で現在の状態確認
3.表示された赤字で指摘されているファイルをadd、commit
4.再度git status
で赤字が消えたことを確認
5.コミットしたファイルをpush
###1.ブランチの一覧取得
git log --oneline --graph --all
を叩くと、下記のcafb650
部分でブランチが枝分かれしてしまっているのが確認できます。
$ git log --oneline --graph --all
* 9bf9dc2 (HEAD -> main) [add] デザイン実装
| * cafb650 (origin/main, origin/HEAD) [add] デザイン実装
|/
* b831743 [add] 在庫登録の項目追加
* 60ebefa [add] 在庫検索機能のコントローラ追加
* df3a0dc [remove] 在庫一覧表示のテンプレートファイルを削除
* 060eeaf [add] 在庫検索機能を追加
* c37030a [fix] 在庫の編集内容確認画面にアクセスできない不具合の修正
###2.git statusで状態確認
git status
を叩いたら、何かのメッセージとパスが表示されましたね。
今回赤字で表示されたのが、Unmerged paths:
の下に表示された2つのパスです!
この最初のメッセージでは、ブランチが分岐しています。一つ一つ異なるコミットが存在しています。
と書いてあり、下の指摘されたパスは、マージされていないパス
として赤字で表示されています。
$ git status
//ブランチが分岐していると指摘されている
On branch main
Your branch and 'origin/main' have diverged,
and have 1 and 1 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
//マージされていないパスがある
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
//マージされていないパスが赤字で表示
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: resources/views/stock/list.blade.php
both modified: resources/views/stock/search.blade.php
###3.マージされていないパスをインデックスに追加・コミットする
では、マージされていないと赤字で指摘されたパスをgit add パス
でインデックスに追加します。
次にgit commit -m 'コミットメッセージ
でコミットします。
###4.再度git statusで状態確認
コミットまで完了したら再度git status
で状態を確認します。
すると、今回は赤字が消えているのが確認できるかと思います!
そして、mainブランチは最新です
というメッセージも表示されました。
$ git status
On branch main
Your branch is up to date with 'origin/main'.
###4.コミットしたファイルをリモートリポジトリに反映
最後にgit push origin main
でリモートリポジトリにプッシュして反映させます。
無事プッシュまで完了したので解決できました!
参考サイト
https://tea-programming.blogspot.com/2020/03/gitfatal-exiting-because-of-unresolved.html