#発生したマージコンフリクト
branchをmasterにチェックアウトしてブランチでの変更をmergeしようとした時にコンフリクトが発生。
初めてのことだったので記録しておくことにしました。
ブランチ作業を終えてmasterブランチにマージしようとしたところ、
$ git merge finalpage
・
・
CONFLICT (content): Merge conflict in config/routes.rb
・
・
Automatic merge failed; fix conflicts and then commit the result.
と、怒られてしまいました。googleで調べてみると、コードの内容に競合が発生した時に起こるとのことらしいですね。git status で確認すると、
On branch master
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: routes.rb
no changes added to commit (use "git add" and/or "git commit -a")
と、なりました。すなわち別々のブランチで修正されていてどっちかにしないとおかしいよ、ってことですね。私の場合、masterブランチの内容とfinalpageブランチ両方で内容の変更が発生しており、双方が両立しないためコンフリクトが発生したのでは、と考えています。
vscodeでコードを確認すると、
get 'sessions/new'
<<<<<<< HEAD
resources :users do
member do
get '/password_reset', to: 'password_resets#new'
post '/password_reset', to: 'password_resets#create'
end
end
=======
resources :users
>>>>>>> finalpage
となっていました。
<<< HEAD === >>> finalpage
で囲まれている内容をlocalで修正しなければならないということなので、
<<< HEAD === に囲まれた内容にしたいため、
=== >>> finalpage で囲まれている内容は手動で削除し、
git add routes.rbを実行して、git statusでコミット内容を確認すると、
On branch master
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
Changes to be committed:
modified: routes.rb
に変わりました。コンフリクトは直せているからcommitしてマージを完了してね、ってことらしいので、あとはコミットしてマージも完了し、解決できました。
#参考文献
https://yu8mada.com/2018/06/13/how-to-resolve-a-merge-conflict-in-git/
こちらの執筆者様が非常に分かりやすく解説されていてとても助かりました!