第6回 GitとGitHubの初心者向け講座
前回は、Pull Requestを使ってコードレビューを行い、マージする流れを学びました。今回は、Gitを使った開発で頻繁に発生するコンフリクトとその解決方法について学びましょう。
今回の目標
コンフリクトとは何かを理解する
コンフリクトを発生させる
コンフリクトを解決する
コンフリクトとは?
コンフリクトとは、複数のブランチで同じファイルの同じ部分を変更した場合に発生する競合のことです。
例えば、main ブランチと feature ブランチの両方で README.md の同じ行を編集し、feature ブランチを main ブランチにマージしようとすると、Gitはどちらの変更を採用すれば良いか判断できずにコンフリクトが発生します。
ステップ1: コンフリクトを発生させる
main ブランチで README.md を編集
main ブランチに切り替えます。
Bash
git checkout main
README.md の末尾に、以下の行を追加してコミットします。
Markdown
## 最新情報
最新情報はこちらをご覧ください
feature/add-function ブランチで README.md を編集
feature/add-function ブランチに切り替えます。
Bash
git checkout feature/add-function
README.md の末尾に、以下の行を追加してコミットします。
Markdown
## お知らせ
お知らせはこちらをご覧ください。
マージ
main ブランチに feature/add-function ブランチをマージします。
Bash
git checkout main
git merge feature/add-function
コンフリクトが発生します。
ステップ2: コンフリクトを解決する
コンフリクト箇所を確認
README.md を開くと、コンフリクトが発生している箇所が以下のように表示されます。
Markdown
<<<<<<< HEAD
## 最新情報
最新情報はこちらをご覧ください。
=======
## お知らせ
お知らせはこちらをご覧ください。
>>>>>>> feature/add-function
<<<<<<< HEAD と ======= の間は main ブランチの内容、======= と >>>>>>> feature/add-function の間は feature/add-function ブランチの内容です。
コンフリクトを解消
編集してコンフリクトを解消します。例えば、両方の変更内容を残したい場合は、以下のように編集します。
Markdown
## 最新情報
最新情報はこちらをご覧ください。
## お知らせ
お知らせはこちらをご覧ください。
ステージングとコミット
コンフリクトを解消したファイルをステージングし、コミットします。
Bash
git add README.md
git commit -m "コンフリクトを解消"
補足
コンフリクトの解決方法は、状況によって異なります。
コンフリクトが発生した場合は、落ち着いて原因を分析し、適切な方法で解決しましょう。
コンフリクトを避けるためには、こまめにコミットし、他の開発者とコミュニケーションを取りながら作業を進めることが重要です。
これで、コンフリクトの解決方法を学ぶことができました。コンフリクトはGitを使った開発で避けては通れないものですが、落ち着いて対処すれば問題ありません。