はじめに
共同で作業をしているとどこかしらで必ず起きてしまうのがコンフリクト。
コンフリクト(conflict)とは、そもそも「衝突」を意味しています。
そしてGitコンフリクトとは、前述したGitマージしたときに発生する衝突のことで、マージ対象のブランチで同じファイルの同じ箇所で修正を行った時に発生します。
よく起こる事象のようですが、
慣れないうちは結構テンパってしまうと思うのでその不安を少しでも解消すべく記事にまとめていきます。
あと備忘録。
進め方
// mainブランチへ移動する
$ git checkout main
// 最新のmainをPullする
$ git pull origin main
// 作業しているブランチへ移動する
$ git checkout 39-be-webtest-usercourseapi
// マージする
$ git merge main
おそらくこのマージのタイミングでコンフリクトが起こることが多いかと思います。
IDEに戻ってあげるとコンフリクトしているファイル、箇所がわかると思うので移動しましょう。
コンフリクトしているファイルに移動する
片方だけを残したり、上書きしたりとやり方はいくつかあるようですが、
今回やったのは、上書きベースでの修正でした。
mainにあがっているコードに自身の修正を加えていく形ですね。
黄色がかった膜を消してあげる
Gitではコンフリクトしている箇所にかけて、黄色がかった膜のようなものがかかっています。
HEADやmainなどと対象部分をわかりやすく指定してくれているので、
該当の部分を把握しながら黄色がかった膜を消していきます。(HEADとかを消せば消えていく)
修正していく
どの部位に差分があるのか理解した上で、コードをどうしていきたいのか修正していきます。
pintを実行する
これは皆やることではないと思うが、現在のプロジェクトではコードを整形してくれるpintを導入して作業をしている。
コミット前に実装しているのでここでやってあげる。
docker-compose exec app bash
./vendor/bin/pint -v
ステージングにあげる
git add .
をして対象ファイルをステージングにあげる。
$ git add .
ステータスも確認してあげて、上がっているか確認する
$ git status
動作確認をする
Seederでデータ投入だったり、テスト実装など実際に作業している内容に沿って動作確認をしてあげる。
コミットする
コミットメッセージなどプロジェクト毎にルールがあればそれに従う
git commit -m "Merge main"
Pushしてあげる
最後にPushしてOK。
$ git push origin 39-be-webtest-usercourseapi
以上。