Visual Studio で Git を使用してバージョン コントロールを簡単にする方法

ご利用のコードの以前に動作していたバージョンに戻ることができたらと思ったことはありませんか。 コードのコピーをバックアップとして別の場所に手動で格納できることにお気づきですか。 バージョン コントロールが答えとなります。

Git は、最も広く使用されている最新のバージョン コントロール システムです。 Git を使用すると、コードに加えた変更を時系列的に追跡することができ、特定のバージョンに戻すことができます。 したがって、プロの開発者であろうと、コーディング方法を学んでいる方であろうと、Visual Studio の Git エクスペリエンスは非常に役立ちます。

ヒント

Visual Studio での Git と GitHub の使用について学ぶには、Git ラーニング シリーズにサインアップしてください。

Visual Studio で Git および GitHub の使用を開始する

Git を使用すれば、Visual Studio によるバージョン管理が簡単になります。 お客様のいる場所でお目にかかります。 GitHub や Azure DevOps など、自分で選択した Git プロバイダーを使用してリモートで作業することができます。 または、プロバイダーをまったく使用せずにローカルで作業することもできます。

Visual Studio で Git の使用を開始するには:

  • GitHub のような Git プロバイダー上でホストされている Git リポジトリがある場合は、ご利用のローカル コンピューターにリポジトリを複製します。

  • それ以外の場合は、簡単に新しい Git リポジトリを作成し、コードを追加できます。 Git プロバイダーをまだ用意していない場合は、GitHub で作業を開始することをお勧めします。このプロバイダーに合わせて、Visual Studio の Git エクスペリエンスが最適化されているからです。 GitHub には、セキュリティで保護された無料のクラウド コード ストレージが用意されていて、ご利用のコードを格納し、任意のデバイスでどこからでもアクセスすることができます。

GitHub と GitHub Enterprise の両方のアカウントをキーチェーンに追加できるだけでなく、Microsoft アカウントと同様にそれらを利用することもできます。 GitHub アカウントを持っていない場合は、ここで次の手順に従って、Visual Studio で使用する GitHub アカウントを作成します。

Git を初めてお使いになる場合は、https://git-scm.com/ の Web サイトから開始することをお勧めします。

Visual Studio の [Git リポジトリの作成] ダイアログ ボックスのスクリーンショット。

コマンド ラインで git コマンドを使用する場合は、(Microsoft 製品ではなく) Git for Windows もインストールする必要があります。

ソリューション エクスプローラーにファイルを表示する

リポジトリを複製するか、ローカル リポジトリを開くと、Visual Studio は Git コンテキストに切り替わります。 ソリューション エクスプローラーによって Git リポジトリのルートにあるフォルダーが読み込まれ、ディレクトリ ツリーがスキャンされ、CMakeLists.txt のような表示可能なファイルや、.sln ファイル拡張子のものが検索されます。 詳細については、「ソリューション エクスプローラーにファイルを表示する」を参照してください。

直感的な内部ループ ワークフロー

日常の Git ワークフローの場合、Visual Studio では、コーディング中にコードから切り替えることなく、Git とシームレスにやりとりすることができます。

マルチタスクを実行し、自分のコードをブランチを通して試してみることができます。 自分でまたはチームで同時に複数の機能に取り組む場合、または作業中のコードに影響を与えることなくアイデアを探索したい場合は、分岐が非常に役立ちます。 推奨される Git ワークフローでは、作業するすべての機能または修正プログラムに新しいブランチが使用されます。 Visual Studio からブランチを作成する方法について説明します。

新しいブランチを作成してそれに切り替えると、既存のファイルを変更するか、新しいファイルを追加してからリポジトリに作業をコミットすることで、作業を開始できます。 Visual Studio でコミットを行う方法と、Git でのファイルの状態を十分に理解する方法の詳細については、コミットを行う方法に関するページを参照してください。

Git は分散型バージョン コントロール システムです。つまり、これまでに行ってきた変更はすべて、ローカルのみでの変更です。 これらの変更をリモート リポジトリに投稿するには、これらのローカル コミットをリモートにプッシュする必要があります

チームで作業している場合、またはさまざまなマシンを使用している場合は、リモートリ ポジトリ上で新しい変更を継続的にフェッチおよびプルする必要もあります。 Visual Studio での Git ネットワーク操作の管理方法の詳細については、フェッチ、プル、プッシュ、および同期に関するページを参照してください。

Git メニューと、ソリューション エクスプローラーの [Git 変更] タブが表示されている Visual Studio IDE。

リポジトリ管理とコラボレーション

ただし、Git リポジトリに重点を置いた方が理にかなっている場合もあります。 たとえば、チームがどのような作業を行っているかを把握すること、別の分岐からコミットをコピーすること、または出力方向のコミットをクリーンアップするだけにすることが必要になる場合があります。 Visual Studio には、強力なリポジトリ参照およびコラボレーションの機能が含まれていて、他のツールを使用する必要がありません。

Git リポジトリに集中できるように、Visual Studio には [Git リポジトリ] ウィンドウがあります。これは、リポジトリ内のすべての詳細 (ローカルおよびリモート ブランチや、コミット履歴を含む) を統合したビューです。 このウィンドウには、メニュー バーまたはステータス バーの [Git] または [表示] から直接アクセスできます。

Git メニューと、ソリューション エクスプローラーの [Git 変更] タブが強調表示されている Visual Studio IDE。

Git リポジトリを参照および管理する

Visual Studio で Git リポジトリ ウィンドウを使用してご自分の Git リポジトリを参照および管理する方法の詳細については、以下のページを参照してください。

マージ競合を処理する

2 人の開発者がファイル内の同じ行を変更し、Git でどちらが正しいかが自動的に認識されない場合、マージ中に競合が発生する可能性があります。 Git によってマージが停止され、競合している状態であることが通知されます。 詳細については、マージ競合の解決に関するページを参照してください。

Git 設定をパーソナル化する

リポジトリ レベルとグローバル レベルで Git 設定をカスタマイズするには:

  1. メニュー バーの [Git]>[設定] または [ツール]>[オプション]>[ソース管理]>[Git グローバル設定] のいずれかに移動します

  2. 次に、必要なオプションを選択します。

    パーソナル化とカスタマイズの設定を選べる、Visual Studio IDE の [オプション] ダイアログ ボックスのスクリーンショット。

パフォーマンスおよび生産性の向上

Visual Studio 内の統合 Git ツールに関しては、パフォーマンスと生産性の向上が繰り返し続けられています。 注目すべきいくつかの更新を次に示します。

  • コミット グラフ。 Visual Studio 2022 バージョン 17.2 で、Git リポジトリまたはブランチ履歴を表示するときに発生する可能性のある遅延を減らすのに役立つコミット グラフ機能を導入しました。 詳しくは、Git エクスペリエンスの強化に関するブログ記事をご覧ください。

  • ブランチの切り替え。 また、Visual Studio 2022 バージョン 17.2 では、ソリューションの再読み込みを必要とするブランチ切り替えの数を、推定で 80% 減らしました。 詳しくは、Git ブランチの切り替えのパフォーマンス向上に関するブログ記事をご覧ください。

Visual Studio 2022 バージョン 17.6 には、GitHub の issue と Azure DevOps の作業項目を検索したりリンクしたりする機能など、さらに多くの機能更新があります。 すべての詳細については、生産性を向上させるための Git 機能に関するブログ記事をご覧ください。

Git が Visual Studio 2019 での既定のバージョン管理エクスペリエンスになりました。 バージョン 16.6 以降、機能セットの構築と、お客様のフィードバックに基づくその反復処理に取り組んできました。 バージョン 16.8 では、すべてのユーザーに対して既定のバージョン コントロール エクスペリエンスになりました。

Note

Microsoft は Visual Studio 2022 の Git 機能セットについても、構築と繰り返しを継続しています。 最新の機能更新の詳細については、ブログ記事「Visual Studio でのマルチリポジトリのサポート」を参照してください。

Git の詳細

Git は最も広く使用されている最新のバージョン コントロール システムであるため、プロフェッショナルな開発者であるか、コードの作成方法を学習しているかに関係なく、Git は非常に役に立ちます。 Git を初めてお使いになる場合は、https://git-scm.com/ の Web サイトから開始することをお勧めします。 そこには、チート シート、人気のあるオンライン ブック、および Git の基本のビデオがあります。

Visual Studio 2019 で Git を開始する

Visual Studio で新しい Git エクスペリエンスを使用する方法について説明しますが、最初に概要を確認したい場合は、次のビデオをご覧ください。

"ビデオの長さ:5.27 分"

生産性を向上させるために Visual Studio で Git の使用を開始するには、次の 3 つの方法があります。

  • 新しい Git リポジトリを作成する。 使用するコードが Git にまだ関連付けられていない場合は、新しい Git リポジトリを作成することから始めてください。
  • 既存の Git リポジトリをクローンする。 使用するコードがご利用のマシン上にない場合は、既存の任意のリモート リポジトリをクローンすることができます。
  • 既存の Git リポジトリを開く。 お使いのマシン上に既にコードがある場合は、[ファイル]>[開く]>[プロジェクト/ソリューション] (または[フォルダー]) を使用して開くことができます。VisualStudio によって、初期化された Git リポジトリがあるかどうかが自動的に検出されます。

Note

Visual Studio 2019 のバージョン 16.8 からは、完全に統合された GitHub アカウントのエクスペリエンスが含まれています。 これで、GitHub と GitHub Enterprise 両方のアカウントをキーチェーンに追加できるようになりました。 Microsoft アカウントの場合と同様にそれらを追加して活用できるようになります。つまり、Visual Studio 全体で GitHub リソースにより簡単にアクセスできるようになります。 詳細については、「Visual Studio の GitHub アカウントを使って作業する」ページを参照してください。

ヒント

GitHub アカウントを持っていない場合は、「Visual Studio で使用するための GitHub アカウントの作成」ページに記載されている手順に従って開始できます。

Visual Studio 2019 で新しい Git リポジトリを作成する

コードが Git に関連付けられていない場合は、新しい Git リポジトリを作成することから始めることができます。 これを行うには、メニュー バーから [Git]>[Git リポジトリの作成] を選択します。 次に、 [Git リポジトリの作成] ダイアログ ボックスに情報を入力します。

Visual Studio の [Git リポジトリの作成] ダイアログ ボックス。

[Git リポジトリの作成] ダイアログ ボックスを使用すると、新しいリポジトリを GitHub に簡単にプッシュできます。 既定では、新しいリポジトリはプライベートになります。つまり、アクセスできるのは自分だけです。 このチェックボックスをオフにすると、リポジトリはパブリックになります。つまり、GitHub のすべてのユーザーに表示されます。

ヒント

リポジトリがパブリックかプライベートかに関係なく、チームで作業していない場合でも、コードのリモート バックアップを GitHub に安全に保存することをお勧めします。 これにより、使用しているコンピューターに関係なく、コードを使用できるようになります。

ローカル専用の Git リポジトリを作成するには、[ローカルのみ] オプションを使用します。 または、[既存のリモート] オプションを使用して、Azure DevOps または他の Git プロバイダー上の既存の空のリモート リポジトリに自分のローカル プロジェクトをリンクすることもできます。

Visual Studio 2019 で既存の Git リポジトリをクローンする

Visual Studio には、簡単なクローン エクスペリエンスが含まれています。 クローンするリポジトリの URL がわかっている場合は、 [リポジトリの場所] セクションに URL を貼り付けてから、Visual Studio のクローン先となるディスクの場所を選択します。

Visual Studio の [Clone a Git Repository]\(Git リポジトリのクローン\) ダイアログ ボックス。

リポジトリの URL がわからない場合は、Visual Studio を使用すると、既存の GitHub または Azure DevOps リポジトリを参照してクローンすることが簡単にできます。

Visual Studio 2019 で既存のローカル リポジトリを開く

リポジトリをクローンまたは作成すると、Visual Studio によって Git リポジトリが検出され、Git メニューの [Local Repositories]\(ローカル リポジトリ\) の一覧に追加されます。

ここから、Git リポジトリにすばやくアクセスして切り替えることができます。

Visual Studio の Git メニューの [Local Repositories]\(ローカル リポジトリ\) オプション

Visual Studio 2019 のソリューション エクスプローラーでファイルを表示する

リポジトリをクローンするか、ローカル リポジトリを開くと、Visual Studio では、以前に開いていたソリューションとプロジェクトを保存して閉じることにより、その Git コンテキストに切り替えられます。 ソリューション エクスプローラーによって Git リポジトリのルートにあるフォルダーが読み込まれ、ディレクトリ ツリーの表示可能なファイルがスキャンされます。 これには、CMakeLists.txt などのファイルや、.sln ファイル拡張子を持つファイルが含まれます。

ソリューション エクスプローラーに読み込むファイルに基づいて、Visual Studio でそのビューが調整されます。

  • 単一の .sln ファイルを含むリポジトリをクローンすると、ソリューション エクスプローラーによってそのソリューションが直接読み込まれます。
  • ソリューション エクスプローラーでリポジトリ内の .sln ファイルが検出されない場合は、既定でフォルダー ビューが読み込まれます。
  • リポジトリに複数の .sln ファイルが含まれている場合は、ソリューション エクスプローラーによって選択可能なビューの一覧が表示されます。

ソリューション エクスプローラーのツールバーにある [表示の切替] ボタンを使用して、現在開いているビューとビューの一覧を切り替えることができます。

Visual Studio で [表示の切替] ボタンが選択されているソリューション エクスプローラー。

詳細については、「リポジトリからプロジェクトを開く」チュートリアルの「ソリューション エクスプローラーにファイルを表示する」セクションを参照してください。

Visual Studio 2019 の [Git Changes]\(Git 変更\) ウィンドウ。

Git により、作業中のリポジトリ内のファイルの変更が追跡され、リポジトリ内のファイルが 3 つのカテゴリに分割されます。 これらの変更は、コマンド ラインで git status コマンドを入力したときに表示されるものと同じです。

  • 未変更のファイル: これらのファイルは、最後のコミットから変更されていません。
  • 変更されたファイル: これらのファイルには最後のコミットからの変更が含まれていますが、まだ次回のコミット用にステージされていません。
  • ステージされたファイル: これらのファイルには、次のコミットに追加される変更が含まれています。

作業を行っている間、Visual Studio により、 [Git Changes](Git 変更) ウィンドウの [変更] セクションで、プロジェクトに対するファイルの変更が追跡されます。

Visual Studio の [Git Changes]\(Git 変更\) ウィンドウ。

変更をステージする準備ができたら、ステージングする各ファイルの [ + ] (プラス) ボタンをクリックするか、ファイルを右クリックして [ステージ] を選択します。 [変更] セクションの上部にある、すべての [+] (プラス) ボタンを使用して、変更したすべてのファイルをワンクリックでステージすることもできます。

変更をステージすると、Visual Studio によって [ステージされている変更] セクションが作成されます。 [ステージされている変更] セクションの変更のみが次のコミットに追加されます。これを行うには、[ステージ済みをコミット] を選択します。 このアクションの同等のコマンドは、git commit -m "Your commit message" です。 [–] (マイナス) ボタンをクリックして、変更をステージング解除することもできます。 このアクションの同等のコマンドは、1 つのファイルをステージ解除する git reset <file_path>、またはディレクトリ内のすべてのファイルをステージング解除する git reset <directory_path> です。

ステージ領域をスキップして、変更されたファイルをステージしないように選択することもできます。 この場合、Visual Studio を使用すると、変更をステージせずに直接コミットできます。 コミット メッセージを入力し、[すべてコミット] を選択します。 このアクションの同等のコマンドは、git commit -a です。

また、Visual Studio では、[すべてをコミットしてプッシュ][すべてをコミットして同期] を使用して、コミットと同期をワンクリックで簡単に行えます。 [変更] セクションと [ステージされている変更] セクションのいずれかのファイルをダブルクリックすると、変更されていないバージョンのファイルとの行ごとの比較を確認できます。

Visual Studio でのファイル バージョンの行ごとの比較

ヒント

Azure DevOps リポジトリに接続している場合は、"#" 文字を使用して、Azure DevOps 作業項目をコミットに関連付けることができます。 [チーム エクスプローラー]>[接続の管理] を介して、Azure DevOps リポジトリに接続することができます。

Visual Studio 2019 で既存のブランチを選択する

Visual Studio の [Git Changes](Git 変更) ウィンドウの上部にあるセレクターに現在のブランチが表示されます。

Visual Studio の Git 変更セレクターの上部にあるセレクターを使用して表示できる現在のブランチ

現在のブランチは、Visual Studio IDE の右下隅にあるステータス バーでも使用できます。

Visual Studio IDE の右下隅にあるステータス バーを使用して表示できる現在のブランチ

どちらの場所からでも、既存のブランチを切り替えることができます。

Visual Studio 2019 で新しいブランチを作成する

新しいブランチを作成することもできます。 このアクションの同等のコマンドは、git checkout -b <branchname> です。

新しいブランチの作成は、ブランチ名を入力して既存のブランチを基にするだけの簡単なものです。

Visual Studio の [新しいブランチを作成] ダイアログ ボックス

ベースとして、既存のローカルまたはリモート ブランチを選択できます。 [ブランチのチェックアウト] チェックボックスをオンにすると、新しく作成されたブランチに自動的に切り替わります。 このアクションの同等のコマンドは、git checkout -b <new-branch><existing-branch> です。

Visual Studio 2019 の [Git リポジトリ] ウィンドウ

Visual Studio には、新しい [Git リポジトリ] ウィンドウがあります。これは、リポジトリ内のすべての詳細 (すべてのブランチ、リモート、およびコミット履歴を含む) を統合したビューです。 このウィンドウには、メニュー バーまたはステータス バーの [Git] または [表示] から直接アクセスできます。

Visual Studio 2019 でブランチを管理する

[Git] メニューから [ブランチの管理] を選択すると、[Git リポジトリ] ウィンドウにブランチ ツリービューが表示されます。 左ペインからは、右クリックのコンテキスト メニューを使用して、ブランチのチェックアウト、新しいブランチの作成、マージ、リベース、チェリーピックなどを行うことができます。 ブランチをクリックすると、右ペインにそのコミット履歴のプレビューが表示されます。

Visual Studio 2019 での着信および発信コミット

ブランチをフェッチすると、[Git Changes]\(Git 変更\) ウィンドウのブランチ ドロップダウンの下にインジケーターが表示され、リモート ブランチからプルされていないコミットの数が表示されます。 このインジケーターには、プッシュされていないローカル コミットの数も表示されます。

Visual Studio のインジケーター ドロップダウン UI 要素を示す [Git Changes]\(Git 変更\) ウィンドウ

このインジケーターは、 [Git リポジトリ] ウィンドウでそのブランチのコミット履歴に移動するためのリンクとしても機能します。 履歴の一番上には、これらの送信および発信中のコミットの詳細が表示されます。 ここから、コミットをプルまたはプッシュすることもできます。

Visual Studio のブランチのコミット履歴を表示する [Git リポジトリ] ウィンドウ

Visual Studio 2019 でのコミットの詳細

コミットをダブルクリックすると、Visual Studio によってその詳細が別のツール ウィンドウに表示されます。 ここからコミットを元に戻したり、コミットをリセットしたり、コミット メッセージを修正したり、コミット時にタグを作成したりできます。 コミット時に変更されたファイルをクリックすると、Visual Studio によって、コミットとその親の [差分] ビューが並べて表示されます。

Visual Studio の [コミットの詳細] ダイアログ ボックス

Visual Studio 2019 でのマージの競合を処理する

2 人の開発者がファイル内の同じ行を変更し、Git でどちらが正しいかが自動的に認識されない場合、マージ中に競合が発生する可能性があります。 Git によってマージが停止され、競合している状態であることが通知されます。

Visual Studio を使用すると、マージの競合を簡単に識別して解決できます。 最初に、 [Git リポジトリ] ウィンドウの上部に金色の情報バーが表示されます。

Visual Studio での

[Git Changes](Git 変更) ウィンドウにも、"Merge is in progress with conflicts" (競合があるマージが進行中) というメッセージが表示され、その下の別のセクションには、マージされていないファイルが表示されます。

Visual Studio での

ただし、どちらのウィンドウも開いておらず、代わりにマージ競合があるファイルに移動する場合は、次のテキストを検索する必要はありません。

    <<<<<<< HEAD
    =======
    >>>>>>> main

代わりに、Visual Studio では、開いているファイルに競合があることを示す金色の情報バーがページの上部に表示されます。 次に、リンクをクリックして、マージ エディターを開きます。

Visual Studio での

Visual Studio 2019 のマージ エディター

Visual Studio のマージ エディターは、入力方向の変更、現在の変更、およびマージの結果を表示する 3 方向マージ ツールです。 マージ エディターの最上位レベルにあるツール バーを使用して、ファイル内の競合と自動マージされた相違点の間を移動できます。

Visual Studio のマージ エディター

また、トグルを使用して、相違点の表示/非表示を切り替えたり、単語の違いを表示/非表示にしたり、レイアウトをカスタマイズしたりすることもできます。 両側の上部にチェックボックスがあり、これを使用して、一方または他方からすべての変更を取り込むことができます。 ただし、個々の変更を行うには、どちらか一方の競合する行の左側にあるチェックボックスをクリックします。 最後に、競合の解決が終了したら、マージ エディターの [マージの許可] ボタンを選択します。 次に、コミット メッセージを作成し、変更をコミットして解決を完了します。

Visual Studio 2019 で Git 設定をカスタマイズする

リポジトリ レベルとグローバル レベルで Git 設定をパーソナル化してカスタマイズするには、メニュー バーで [Git]>[設定] に移動するか、メニュー バーで [ツール]>[オプション]>[ソース管理] に移動します。 次に、必要なオプションを選択します。

パーソナル化とカスタマイズの設定を選択できる、Visual Studio IDE の [オプション] ダイアログ ボックス。

Visual Studio 2019 でチーム エクスプローラーの完全なエクスペリエンスを使用する方法

新しい Git エクスペリエンスは、バージョン 16.8 以降の Visual Studio 2019 での既定のバージョン管理システムです。 しかし、それを無効にしたい場合は、そのようにできます。 [ツール]>[オプション]>[環境]>[プレビュー機能] の順に移動してから、 [New Git user experience](新しい Git ユーザー エクスペリエンス) チェックボックスを切り替えます。これにより、Git のチーム エクスプローラーに戻ります。

Visual Studio の [オプション] ダイアログ ボックスの [プレビュー機能] セクション