Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】วิธีแก้ git conflict เบื้องต้นใน Virtual Studio Code

2025年09月13日に「Dev.to」が公開したITニュース「วิธีแก้ git conflict เบื้องต้นใน Virtual Studio Code」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Gitで複数人が同じファイルを編集し競合した場合の解決法を解説する。まず`git config pull.rebase false`を設定し、マージ準備を行う。その後`git pull`で競合箇所を確認し、どちらの変更を残すか決める。解決後、変更をコミット・プッシュすれば、無事にコードを共有できる。

ITニュース解説

ソフトウェア開発において、複数の開発者が一つのプロジェクトに携わることは一般的である。この共同作業をスムーズに進めるために、Gitというバージョン管理システムが広く利用されている。Gitは、コードの変更履歴を記録し、チームメンバー間でのコードの共有や統合を効率的に行うための重要なツールだ。

しかし、Gitを利用していても、複数の開発者が同じファイルの同じ部分を同時に変更した場合、「Git Conflict」(Gitの競合、またはコンフリクト)という問題が発生することがある。これは、Gitがどちらの変更を最終的に採用すべきかを自動的に判断できない状況であり、開発者が手動で解決する必要がある。

具体的なシナリオを考えてみよう。あなたはシステムエンジニアを目指し、開発チームの一員としてプロジェクトに取り組んでいる。Gitリポジトリには共同で開発しているプログラムファイルがあり、あなたは特定の機能を追加するためにそのファイルを修正した。変更後、あなたは自分の手元で修正したコードをGitに追加(Add)し、変更内容を確定(Commit)した。

次に、あなたが自分の変更を共有リポジトリにアップロードしようと、VS Code(Visual Studio Code)という開発環境の「Source Control」(ソース管理)パネルにある「Sync Change」(変更を同期)ボタンを押したと想像する。この「Sync Change」は、あなたのローカルの変更をリモートのGitリポジトリに送り、同時にリモートリポジトリにある他の開発者の新しい変更をあなたのローカルに取り込むための操作だ。

ところが、「Sync Change」ボタンを押した直後、画面にポップアップが表示され、同期が正常に行われなかったことを示唆する。何が起こったのか確認するため、そのポップアップ内の「Show Command Output」ボタンを押すと、Gitからのエラーメッセージが表示される。このエラーメッセージは、通常、あなたが git pull コマンドをコマンドライン(Terminal)で実行した際にも同じように表示される内容だ。それは、リモートリポジトリに存在する最新の変更と、あなたの手元にある変更とが競合していることを意味する。

エラーメッセージの中には、コンフリクトを解決するために「merge」(マージ)するか「rebase」(リベース)するかを決定するよう促すヒントが含まれていることがある。マージとは、二つの異なる変更履歴を結合し、新しい「マージコミット」を作成して履歴を残す方法である一方、リベースは自分の変更を一時的に棚上げし、リモートの最新変更の上に自分の変更を再適用することで、あたかも最新の状態から作業を開始したかのように履歴を直線的にする操作だ。

初心者にとっては、マージの方が履歴の追跡が直感的で分かりやすい場合が多い。そのため、Gitがデフォルトでリベースを試みないように設定することをお勧めする。これを設定するには、VS CodeのTerminalで git config pull.rebase false というコマンドを実行する。この設定は、あなたの現在のGitリポジトリに対して一度だけ実行すれば十分で、次回以降 git pull を実行した際に自動的にマージ処理を試みるようになる。

この設定が完了したら、再度VS Codeの「Sync Change」ボタンを押すか、Terminalで git pull コマンドを実行してみよう。すると、Gitはコンフリクトが発生しているファイルを開き、変更が競合している具体的な行を視覚的にハイライト表示する。VS Codeのような統合開発環境では、通常、コンフリクトしているコードブロックに対して、「現在の変更を受け入れる(あなたの変更を採用する)」、「受信した変更を受け入れる(リモートの変更を採用する)」、「両方の変更を受け入れる(手動で結合する)」といった選択肢がボタンとして表示される。あなたは、プロジェクトの要件や他の開発者との相談に基づいて、どの変更を採用するか、あるいは両方をどのように組み合わせるかを慎重に決定する必要がある。

コンフリクトのある部分をすべて手動で修正し、最終的な正しいコードの状態になったら、そのファイルを再び「Add」(またはStage)し、変更内容を「Commit」する。この時、Gitはあなたがコンフリクトを解決したことを認識し、「merge conflicts」としてコミットするかどうかを尋ねるポップアップが表示されるので、「Yes」と答えてコミットを完了させよう。

これで、コンフリクトの解決作業は完了し、あなたのローカルリポジトリはリモートリポジトリの最新の変更と、あなたの解決済み変更を含む状態になった。あとは、通常通りコミットをリモートリポジトリにアップロードするために「Sync Change」ボタンを押すか、Terminalで git push コマンドを実行すればよい。これにより、あなたの変更は共有リポジトリに反映され、他の開発者もあなたの変更を取り込んで共同作業を継続できるようになる。

この一連のコンフリクト解決のプロセスは、Gitを使ったチーム開発において避けて通れない重要なスキルである。最初は複雑に感じるかもしれないが、その発生原因と解決手順を理解し、VS Codeのような開発環境の支援機能を活用することで、スムーズに問題を解決できるようになる。このスキルを習得することは、システムエンジニアとして効率的かつ協調的に開発を進める上で非常に役立つだろう。

関連コンテンツ