複数のリポジトリとサブモジュールを操作する

マルチリポジトリのサポートは、Visual Studio 2022 バージョン 17.4 以降で利用できます。 これは、 開発者コミュニティで最も要求の厳しい機能の 1 つです。 Visual Studio では、一度に最大 25 個のアクティブな Git リポジトリを使用できます。

複数リポジトリのサポートは、複数のリポジトリにまたがるソリューションを操作し、同時に複数のリポジトリに Git 操作を適用できることを意味します。 たとえば、大規模な Web プロジェクトでは、フロントエンド、API、データベース、ドキュメント、およびさまざまなライブラリと依存関係で実行される作業を管理するために、異なるリポジトリが必要になる場合があります。 複数リポジトリをサポートする前に、複数の Visual Studio インスタンスを開いてリポジトリ間で動作させる場合があります。 これで、Visual Studio の 1 つのインスタンスを使用して、開いているすべてのリポジトリを管理、表示、デバッグできます。

注

マルチリポジトリのサポートの動作を確認するには、 YouTube の Visual Studio ビデオで複数の Git リポジトリを使用 する方法に関するビデオをご覧ください。

複数の GitHub アカウントがある場合は、簡単に切り替えることができます。 詳細については、「 GitHub アカウントをキーチェーンに追加する」を参照してください。 別のアカウントでサインインしている場合は、異なるリポジトリにアクセスできる場合があります。 Visual Studio では、Git 構成が自動的に更新され、各リポジトリで使用されるアカウントが追跡されます。

Git サブモジュールの管理

Visual Studio 18.9 以降、ファースト クラスの Git サブモジュール のサポートは、要求の厳しいDeveloper Community機能に対応しています。 IDE を離れることなく、サブモジュールを管理できます。 Visual Studioは、Git リポジトリ ウィンドウの専用サブモジュール セクションにサブモジュールを表示します。

3 つのサブモジュールを含む Git リポジトリ ウィンドウの [サブモジュール] セクションのスクリーンショット。

ブランチとリポジトリの選択には、親子リポジトリ階層が反映されます。 [ Git の変更] ウィンドウでは、リポジトリごとに変更も識別されます。

[Git の変更] ウィンドウのリポジトリ ピッカーのスクリーンショット。親リポジトリとそのサブモジュールが表示されています。

[ サブモジュール ] セクションでは、サブモジュールを追加、更新、および削除できます。 Visual Studioソリューションまたはフォルダーを開くと、サブモジュールを自動的に検出してアクティブ化します。 混乱を減らすために、サブモジュールは一般的なローカル リポジトリの一覧には表示されません。

サブモジュールの [削除] コマンドが選択されている [Git リポジトリ] ウィンドウのスクリーンショット。

既定では、Visual Studioはサブモジュールを読み取り専用として扱います。 サブモジュール内で変更を加える場合は、[ ツール>オプション>すべての設定>ソース コントロール>Git 設定を選択します。 [ 複数のリポジトリを自動的にアクティブ化する] で、[ はい、サブモジュールを含める] を選択します。 この設定は、次にソリューションを読み込む際に有効になります。

ブランチ管理と変更の追跡

マルチリポジトリのサポートにより、 Git の変更 ウィンドウと Git リポジトリ ウィンドウの機能が拡張されます。 複数リポジトリのシナリオは、1 つのリポジトリを操作する場合と同じ方法で管理できます。

Visual Studio の [新しいブランチ] ボタンのスクリーンショット。

拡張ブランチ作成ダイアログを使用して、複数のリポジトリ間でブランチを一度に作成できます。

Visual Studio の [新しいブランチの作成] ダイアログのスクリーンショット。

次に、変更を加えると、[Git の変更] ウィンドウでリポジトリごとに作業の追跡が行われます。 通常どおりにステージングとコミットを行うことができます。

作業の変更を追跡する [Git の変更] ウィンドウのスクリーンショット。

ステータス バーと Git 変更 ツール ウィンドウのブランチ ピッカーを使用して、ブランチを切り替えることができます。 必要なのは、チェックアウトするブランチを選択するだけです。また、ブランチを右クリックしてコンテキスト メニューを開くことで、分岐のマージ、リベース、名前変更、削除、比較などの内部ループ分岐操作を実行することもできます。

Git 変更ツール ウィンドウのブランチ ピッカー機能のスクリーンショット。

さらに、 Git リポジトリ ウィンドウで、より高度なリポジトリとブランチ管理操作を実行できます。

Git リポジトリ ツール ウィンドウのブランチ ピッカー機能のスクリーンショット。

ネットワーク操作

変更をコミットする準備ができたら、ネットワーク操作ダイアログでプッシュする正確なブランチを簡単に指定し、プッシュの順序を変更できます。 この同じダイアログを使用すると、 フェッチやプルなどの他のネットワーク操作をより詳細に制御できます。

ネットワーク操作ダイアログのプッシュ アクションを示すスクリーンショット。

リポジトリ設定

Git リポジトリ構成オプションを使用して、特定のリポジトリを構成できます。 たとえば、フェッチ時にリモートブランチをプルーンするかどうかを指定できます。

[ツール>オプション] ウィンドウで、[>>>] セクションを展開します。 [ リポジトリ ] ドロップダウン リストを使用して、構成するリポジトリを選択します。

Visual Studio の Git リポジトリ構成オプションのスクリーンショット。

Git 設定>Git グローバル構成 セクションで、すべてのリポジトリに対して同じオプションを構成することもできます。

Git リポジトリ設定オプションを使用して、Visual Studio で現在開いているリポジトリを構成できます。 たとえば、フェッチ時にリモートブランチをプルーンするかどうかを指定できます。

[ツール>オプション] ダイアログで、[ソース管理>Git リポジトリの設定>General] セクションを展開します。

Visual Studio の [Git リポジトリの設定] の [全般] オプションのスクリーンショット。

すべてのリポジトリに対して、同じオプションの一部を [ ソース管理>Git グローバル設定 ] セクションで構成できます。

ソリューションまたはフォルダーから複数のリポジトリをアクティブ化する

ソリューションまたはフォルダーから複数のリポジトリをアクティブ化できます。

ソリューションを使用する

複数のリポジトリを含むソリューションを作成する方法を次に示します。

  1. 既にリポジトリが初期化されている既存のソリューションのいずれかを開きます。

  2. ソリューション エクスプローラーでソリューションを右クリックし、[追加>プロジェクトの作成] を選択します。

  3. リポジトリが初期化されている別のプロジェクトの .csproj ファイルを選択します。

    プロジェクトが追加されると、Visual Studio によって 2 つ目のリポジトリが検出されてアクティブ化されます。 次に、必要に応じてプロジェクト参照を調整できます。

ローカルリポジトリまたはリモートリポジトリを持つ他のプロジェクトを使用して既存のソリューションに新しいプロジェクトを作成する場合は、 git init を使用して新しいプロジェクトを初期化する必要があります。 新しいプロジェクトを初期化すると、ソリューション内の他のプロジェクトで使用されているリポジトリを確認できます。

フォルダーを使用する

必要なリポジトリが独立していて、同じソリューションに存在する必要がない場合は、フォルダーを使用して開くことができます。

ローカル リポジトリ ディレクトリを同じ親フォルダーに配置します。 Visual Studio の起動ページで [ローカル フォルダーを開く ] オプションを使用して、親フォルダーを開きます。 Visual Studio は、各リポジトリを検出してアクティブ化した後、リポジトリごとに変更を追跡します (次のスクリーンショットを参照)。

Visual Studio のフォルダーから複数のリポジトリをアクティブ化する方法を示すスクリーンショット。