前回(変更を確定!コミット実行とコミットメッセージの書き方)では、変更を記録する「コミット」の基本を学びました。
第4回となる今回は、Gitを使っていると必ず直面する 「マージ(統合)」 と、誰もが一度は恐れる 「コンフリクト(競合)」 の解決方法について解説します。
「黒い画面(コマンドライン)でコンフリクトを直すのが怖い…」という方も安心してください。VS Codeの強力なGUI機能を使えば、パズルのように視覚的に解決できます!
GitHub入門シリーズ 全10回
本記事は「GitHub入門」全10回のNo.4です。
- No.1:Git/GitHubの基本概念とGitHub導入による投資対効果(ROI)
- No.2:リポジトリとREADMEから始める
- No.3:変更を確定!コミット実行とコミットメッセージの書き方
- No.4:VS CodeでGitを使いこなす マージ・コンフリクト・便利機能
- No.5:Issue(イシュー)でタスク管理
- No.6:Pull Request(PR)とコードレビュー
- No.7:ブランチ戦略の比較 Git Flow、GitHub Flow、GitLab Flow
- No.8:GitHub Actions CI/CDで自動化
- No.9:Code Scanning・Dependabot セキュリティの自動化
- No.10:なぜGitHubが高パフォーマンスチームを作るのか
今回のゴール
- ブランチの作成と切り替えがVS Codeでできる
- ブランチをマージ(統合)する方法を覚える
- コンフリクト(競合)をVS Codeのマージエディタで解決できる
- 「Git Graph」で履歴の流れを視覚的に理解する
- 「Stash」で作業を一時退避する方法を知る
ブランチの作成と切り替え
チーム開発では、機能ごとに「ブランチ(枝)」を分けて作業し、最後にメインの枝(main)に統合(マージ)するのが一般的です。
VS Codeでブランチを作成・切り替え
コマンドを覚える必要はありません。VS Codeの左下のステータスバーに注目してください。
- 左下の
main(現在のブランチ名)をクリックします - 上部に出るメニューから「+ Create new branch...」を選択します
- ブランチ名(例:
feature/login)を入力してEnterを押します。左下のmainが入力したブランチ名に変更されます
これだけで、新しい並行世界(ブランチ)が作成され、自動的にそこに切り替わります。
ブランチをマージ(統合)する
作業が終わったら、分けた枝を本体(main)に戻す作業、すなわち「マージ」を行います。
ここでは feature/login で作業が終わり、main に統合する流れを実践します。
先ほど作った feature/login で変更を加えてcommitしてください。
ステップ1:受け入れ先に移動する(重要!)
マージにおいて最も重要なルールは、「吸収する側(main)に移動してから、吸収したい相手(feature)を選ぶ」ことです。
- 左下のステータスバーをクリックし、
mainを選択して切り替えます - この時、
feature/loginでの作業内容はすべてコミット済みであることを確認してください
ステップ2:マージを実行する
- コマンドパレット(
Ctrl/Cmd + Shift + P)を開き、Git: Merge...と入力して選択します - 「どのブランチをmainに取り込みますか?」と聞かれるので、
feature/loginを選択します
特に競合がなければ、これでマージ完了です!mainに変更が反映されているはずです。
【拡張機能】Git Graphで履歴を「地図」にする
コマンドラインのログ(文字の羅列)だけでは、「どのブランチがどこから派生して、どこで合流したか」を把握するのは困難です。
そこで、「Git Graph」という拡張機能をインストールしましょう。
- インストール方法: 左側の拡張機能アイコン → "Git Graph" で検索 → Install
インストール後、ステータスバーの「Git Graph」ボタンを押すと、コミットの履歴が「地下鉄の路線図」のようにカラフルに表示されます。
複雑なツリー構造も一目で理解でき、マージの状態確認が劇的に楽になります。
コンフリクト(競合)をパズル感覚で解決する
「同じファイルの同じ行」を別々の人が修正してマージしようとすると、Gitは「どっちを採用すればいいかわからない!」と悲鳴を上げます。これがコンフリクトです。
昔は、ソースコードの中に挿入された <<<<<<< HEAD といった記号を手動で修正する必要があり、これが初心者の高い壁でした。
しかし、現在のVS Codeには 「3-way マージエディタ」 が搭載されています。
VS Codeでの解決手順
- マージしてコンフリクトが発生すると、ファイル名に
!マークが付きます - そのファイルを開き、右下の「マージエディタで開く(Resolve in Merge Editor)」ボタンを押します
- 3つの画面が表示されます:
- 左上(Incoming): 相手の変更(取り込もうとしている内容)
- 右上(Current): 自分の変更(今持っている内容)
- 下(Result): マージ後の結果
- 採用したい変更のチェックボックスにチェックを入れるだけです。「自分の変更を採用し、相手の変更もこの部分だけ取り入れる」といったパズルのような操作が可能です
- 「マージを完了(Complete Merge)」を押せばコンフリクト解決です
- 最後にソースツリーの
コミットをクリックしてマージを完了します
知っておくと得する便利機能
Stash(スタッシュ):作業の一時退避
「作業中だけど、緊急のバグ修正のために別のブランチに切り替えたい…でも今の状態はまだコミットしたくない(中途半端だから)」
そんな時は Stash(一時退避) を使います。
- ソース管理パネルの「…」メニュー → Stash → Stash (Include Untracked) を選択
- 変更が一時的に消え、クリーンな状態になります
- 作業再開時は、Stash → Pop Stash で元に戻せます
まとめ
今回はVS Codeを使って、Git操作を効率化する方法を解説しました。
- ブランチ操作: ステータスバーからクリック一つで完了
- マージ: ブランチでの変更を本体へ反映
- Git Graph: 履歴を「路線図」として視覚化し、迷子にならない
- マージエディタ: 怖いコンフリクトも3画面GUIならパズル感覚で解決
- 便利機能: Stashで、作業を一時退避
コマンドラインへの苦手意識を捨て、VS Codeの強力な機能を使い倒しましょう!
次回は、いよいよGitHubの機能を使ったタスク管理、「Issue(イシュー)」について解説します。コードだけでなく「やるべきこと」を管理する手法を学びましょう。







