💫

【Git/GitHub】超初歩的なコンフリクトを解消してみた【VSCode】

2024/08/09に公開

はじめに

8月に新たな共同プロジェクトが始動しました🎉
そんな中、今回人生初めてのコンフリクトに遭遇したので、スクリーンショットを撮って記録しながらコンフリクトの解消作業を行いました。
本記事では、そのコンフリクトを解消するまでの過程を説明していきます!

現在の状態

  • プルリク後、GitHubのプルリク画面で以下の画面が表示されている
  • 既にmainブランチにマージされた内容とコンフリクトを起こしている
  • 使用エディタはVSCode

解消手順

コンフリクトを解消する方法の種類

まず、コンフリクトを解消する方法として、大きく分けて2つあるようです。

GitHub Docs には、

GitHubで解決できるマージコンフリクトは、Git リポジトリの別々のブランチで、同じファイルの同じ行に異なる変更がなされた場合など、互いに矛盾する行変更を原因とするもののみです。
その他すべての種類のマージコンフリクトについては、コマンドラインでコンフリクトをローカルに解決する必要があります。

とありますので、後者の「自分のエディタ上で解消する方法」でコンフリクト解消ができるようになっておいた方が良さそうです👍

ということで、今回は後者の方法で解消していきます。

コンフリクト解消までの詳細な流れ

  1. 作業用ブランチにmainブランチの内容を取り込みたいので、mainブランチに移動します
    git switch main
    
  2. mainブランチに最新の内容を取り込みます
    git pull origin main
    
  3. 作業用ブランチに移動します
    git switch 作業用ブランチ名
    
  4. 作業用ブランチに、mainブランチの内容を取り込みます
    git merge main
    

ターミナルには、このようにコンフリクトが生じている旨が表示されます。

エディタの画面は以下のようになります。


今回はmainブランチと作業用ブランチ両方の内容を取り込みたいので、赤枠の、「両方の変更を取り込む」をクリックすれば完了です!

ちなみに、青枠の「マージエディターで解決」をクリックしても、同様に解消することができます👀

マージエディターを使ってみる

「マージエディターで解決」をクリックすると、以下のような画面が表示されます。

マージエディターの構成としては以下の通りです。

  1. mainブランチの内容
    • git merge ブランチ名で指定したブランチ
  2. 作業用ブランチの内容
    • 現在のブランチ
  3. 編集結果

1と2は閲覧用の画面なので、直接編集することはできません。
1と2の内容をどのように3に構成するかを決める→3の内容をエディタに反映させる、という流れです!

前述した通り、今回はmainブランチと作業用ブランチ両方の内容を取り込みたいので、まずは1の画面の「受信中を適用する」をクリックします。すると、1の内容が3に反映されます。
次に2の画面の「現在のマシンを適用する」をクリックすると、2の内容が1の内容に追加される形で、3に反映されます。

右下の「マージの完了」ボタンをクリックすると、3の内容がエディタに反映されます!

適宜修正などを加えたら、あとはいつも通り、

git add .
git commit -m "docs: 📚 コンフリクトの解消"
git push origin HEAD

として、プッシュします。
プッシュすると、プルリク画面が以下のように変更されます。

お疲れ様です!
適宜プルリク画面にて修正点などを改めてコメントに残し、レビュー&マージを待ちましょう🥳

さいごに

今後も共同プロジェクトを進めていく中で、得た知見を共有していきたいと思います🙌

また、先日参加した共同プロジェクトが、6月にローンチされました!
GitHub初心者の方向けに、GitHubを使った共同開発の流れが体験できる、オープンソースプロジェクトです🌈

https://github.com/first-contributions-ja/first-contributions-ja.github.io

日本語でわかりやすく解説しているので、共同開発に興味のある方は初めの一歩として、是非コントリビュートしてみてください🌟

参考記事

https://qiita.com/crarrry/items/c5964512e21e383b73da
https://www.r-staffing.co.jp/engineer/entry/20190927_1?mls=i01_0001_20191025
https://futureys.tokyo/lets-resolve-conflict-on-git-by-vs-code-3-way-merge-editor/

Discussion