VS Code での Git ブランチとワークツリー
Git ブランチを使用すると、メインのコードベースに影響を与えることなく、さまざまな機能や実験に同時に取り組むことができます。VS Code には、ブランチ管理のためのツール、並行開発のための Git ワークツリー、一時的な変更のためのスタッシュ管理機能が備わっています。
この記事では、VS Code でブランチ、ワークツリー、スタッシュを操作し、並行開発作業を管理する方法について説明します。
ブランチの操作
ブランチとは、Git 履歴内の特定のコミットを指す、軽量で移動可能なポインターです。ブランチを使用すると、メインの開発ラインから分岐して、機能を独立して開発できます。
例えば、Web アプリケーションに取り組んでいて、ユーザー認証機能の追加と、決済システムのバグ修正の両方を行う必要があるとします。その場合、以下の2つのブランチを作成できます。
feature/user-authentication- ログインおよびサインアップ機能が含まれますbugfix/payment-validation- 決済処理エラーの修正が含まれます
各ブランチは、他のブランチに影響を与えることなく、独自の変更セットを保持します。ブランチを切り替えて異なるタスクに取り組み、後で完了したブランチをメインブランチにマージすることができます。
現在のブランチの表示
現在のブランチは、VS Code 内のいくつかの場所で確認できます。
- ステータスバー: 現在のブランチ名を表示し、素早いブランチ切り替えを可能にします
- リポジトリビュー: リポジトリヘッダーに現在のブランチを表示します
- ソースコントロールグラフ: ブランチの関係と履歴を視覚的に表示します

ブランチの切り替え
Git の用語では、別のブランチに切り替えることを「チェックアウト」と呼びます。ブランチをチェックアウトすると、Git は作業ディレクトリをそのブランチの状態に合わせて更新します。
別のブランチに切り替えるには
-
ステータスバーでブランチ名を選択するか、コマンドパレットから Git: チェックアウト先 (Git: Checkout to) コマンドを実行します (⇧⌘P (Windows, Linux Ctrl+Shift+P))。
-
利用可能なブランチのリストから選択します
- ローカルブランチ: ローカルマシン上に存在するブランチ
- リモートブランチ: ローカルでチェックアウト可能なリモートリポジトリ上のブランチ
- 最近のブランチ: 最近使用したブランチ
ブランチ切り替え時にコミットされていない変更がある場合、作業内容の消失を防ぐために Git が切り替えを拒否することがあります。切り替える前に、変更をコミットするか、スタッシュを使用することを検討してください。
新しいブランチの作成
機能開発や実験を開始するために新しいブランチを作成します。
-
ステータスバーでブランチ名を選択するか、コマンドパレットから Git: ブランチの作成 (Git: Create Branch) を実行します。
-
新しいブランチ名を入力します。
feature/user-authenticationやbugfix/login-errorのように、分かりやすい名前を使用してください。ヒントVS Code はランダムなブランチ名を生成することもできます。これは git.branchRandomName.enable および git.branchRandomName.dictionary 設定で構成できます。
-
新しいブランチを作成する基となるソースブランチ(通常は
mainやdevelop)を選択します。

VS Code は作成後に新しいブランチへ切り替わります。
GitHub Pull Requests and Issues 拡張機能を使用している場合は、GitHub の Issue から直接ブランチを作成できます。これにより、新しいローカルブランチでの作業が開始され、プルリクエストが自動的に事前入力されます。
ブランチの名前変更と削除
現在のブランチの名前を変更するには
- コマンドパレットから Git: ブランチの名前変更 (Git: Rename Branch) を実行するか、その他のアクション (...) メニューから選択します。
- 新しいブランチ名を入力します。
ブランチを削除するには
- 別のブランチに切り替えます(現在アクティブなブランチは削除できません)。
- コマンドパレットから Git: ブランチの削除 (Git: Delete Branch) を実行するか、その他のアクション (...) メニューから選択します。
- リストから削除するブランチを選択します。
対応する リモートブランチの削除 (Delete Remote Branch) アクションを使用して、リモートブランチを削除することもできます。
ブランチを削除すると、ローカルリポジトリから完全に削除されます。そのブランチがマージ済みであるか、あるいは変更が不要であることを確認してください。
ブランチのマージと公開
機能が完成したら、メインブランチにマージします。
- ターゲットブランチ(通常は
mainやdevelop)に切り替えます。 - コマンドパレットから Git: ブランチのマージ (Git: Merge Branch) を実行します。
- マージするブランチを選択します。
リモートリポジトリにブランチを公開するには、ブランチの公開 (Publish Branch) アクションを使用します。
VS Code はソースコントロールビューにマージ結果を表示します。競合が発生した場合は、VS Code がそれをハイライト表示し、解決するためのツールを提供します。マージ競合の解決の詳細については、こちらをご覧ください。
Git ワークツリーの操作
VS Code は Git ワークツリーをネイティブでサポートしており、複数のブランチを同時に管理・作業しやすくしています。
ワークツリーの理解
ワークツリーとは、Git ブランチを別のディレクトリに個別にチェックアウトしたものです。これにより、同じリポジトリに対して複数の作業ディレクトリを持つことができ、それぞれで異なるブランチを扱うことが可能になります。ワークツリー機能は、特に以下の場合に役立ちます。
- 複数の機能を別々のフォルダで同時に進める
- アプリケーションの異なるバージョンを並行して実行する
- ブランチ間で実装を比較する
ワークツリーの作成
VS Code で新しいワークツリーを作成するには
-
ソースコントロールビューから ソースコントロールリポジトリ (Source Control Repositories) ビューを開きます。

-
リポジトリを選択し、その他のアクション (...) メニューを開いて、ワークツリー (Worktrees) > ワークツリーの作成 (Create Worktree) を選択します。

-
指示に従って、新しいワークツリーのブランチと場所を選択します。
VS Code は指定した場所にワークツリー用の新しいフォルダを作成し、選択したブランチをそのフォルダにチェックアウトします。
新しいワークツリーは、ソースコントロールリポジトリビューに別々のエントリとして表示されます。
ワークツリー間の切り替え
VS Code は複数のリポジトリ(ワークツリーを含む)を同時に表示できます。
- 各ワークツリーは、ソースコントロールリポジトリビューで個別のリポジトリとして表示されます。
- 複数の VS Code ウィンドウを開き、それぞれで異なるワークツリーを指定できます。
- ファイル (File) > 最近開いた項目 (Open Recent) を使用して、ワークツリーディレクトリ間をすばやく切り替えます。
ワークツリーを開く
ワークツリーを開くには複数の方法があります。
-
ワークツリーに関連付けられたフォルダを VS Code で直接開きます。VS Code はそれが既存リポジトリのワークツリーであることを自動的に検出します。
-
ソースコントロールリポジトリビューでワークツリーを右クリックし、ワークツリーを新しいウィンドウで開く (Open Worktree in New Window) または 現在のウィンドウでワークツリーを開く (Open Worktree in Current Window) を選択します。
-
コマンドパレットで Git: 現在のウィンドウでワークツリーを開く (Git: Open Worktree in Current Window) または Git: 新しいウィンドウでワークツリーを開く (Git: Open Worktree in New Window) コマンドを実行し、目的のワークツリーを選択します。
ワークツリーからの変更の比較と移行
ワークツリーで変更を加えた場合、それらの変更をメインのワークスペースと比較したり、ワークツリーの変更をメインのリポジトリに取り込んだりできます。
-
ソースコントロールビューで、ワークツリー内の変更されたファイルを右クリックし、ワークスペースと比較 (Compare with Workspace) を選択すると、変更箇所を横並びで確認できます。

-
確認後、コマンドパレットから ワークツリーの変更を移行 (Migrate Worktree Changes) コマンドを使用すると、ワークツリーからのすべての変更を現在のワークスペースにマージできます。
次のステップ
- ステージングとコミット - ブランチ内での変更のコミットについて学ぶ
- マージ競合 - ブランチをマージする際の競合を処理します。
- リポジトリとリモート - リモートブランチと共同作業を行う
- GitHub での共同作業 - GitHub プルリクエストをブランチワークフローで使用する