Visual Studio で Git リポジトリを参照し、ブランチを比較する

[Git Changes]\(Git の変更\) ウィンドウには、コードから切り替えることなく、コーディング中に Git とシームレスに対話する方法が用意されています。 ただし、Git リポジトリに焦点を当てる方が理にかなっている場合があります。 たとえば、チームが何に取り組んでいるかを把握したり、 2 つのコミットを比較 してバグを調査したりする必要がある場合があります。

GitHub や Azure DevOps など、選択した Git プロバイダーをリモートで操作できます。

ローカルおよびリモートのブランチを参照する

開始するには、[表示] メニューの [Git リポジトリ] を選択して (または Ctrl+、Ctrl+ キーボード ショートカットを使用して) Git リポジトリ ウィンドウを開きます。 Git の [変更] ウィンドウとステータス バーで送信/受信リンクを選択して、Git リポジトリ ウィンドウにアクセスすることもできます。

左側のウィンドウにブランチまたはタグとプル要求があるVisual Studioの Git リポジトリ ウィンドウのスクリーンショット。メイン ウィンドウで要求の詳細をプルします。

Git リポジトリ ウィンドウの構造を示すスクリーンショット。

[Git リポジトリ] ウィンドウには、左側のウィンドウが表示されます。 そこで選択した内容によって、右側の内容が決まります。

Visual Studioの左側のウィンドウには、Branches/TagsPull Requests が含まれます。

Git リポジトリ ウィンドウには、前のスクリーンショットで示した 3 つのメイン セクションが含まれています。

ブランチ/タグ: Git を使用すると、ユーザーはマルチタスクを実行し、ブランチを介してコードを試すことができます。 Git での分岐は、いくつかのシナリオで役立ちます。特に、複数の機能を持つ複雑なプロジェクトに取り組む場合や、チームと共同作業する場合に役立ちます。 Visual Studio 17.13 以降では、リポジトリにタグを表示し、任意のタグに移動できます。 チームは git タグ ( v1.0 など) を使用して、リポジトリの履歴内のポイントをマークし、履歴内のその時点のリポジトリの状態を表示できます。 Git - タグ付けを参照してください。

Git リポジトリ ウィンドウの git タグを示すスクリーンショット。

グラフ: このセクションでは、ブランチの状態を視覚化します。 次の 3 つのサブセクションがあります。

  • [Incoming]\(入力方向\) には、自分のチームが貢献している入力方向のコミットが表示されます。
  • [Outgoing]\(出力方向\) には、まだプッシュしていないローカル コミットが表示されます。
  • ローカル履歴 には、ローカル リポジトリによって追跡されたコミットの残りの部分が表示されます。

コミット: このセクションを開くには、[ Graph ] セクションでコミットを選択します。 コミットによって導入された変更は、それらを選択することで確認できます。これは違いを示しています。 たとえば、前のスクリーンショットは、1 つのコミットが Resize.cs ファイルに導入した変更を示しています。

ブランチ/タグ: Git を使用すると、ユーザーはマルチタスクを実行し、ブランチを介してコードを試すことができます。 Git での分岐は、いくつかのシナリオで役立ちます。特に、複数の機能を持つ複雑なプロジェクトに取り組む場合や、チームと共同作業する場合に役立ちます。 リポジトリにタグを表示し、任意のタグに移動できます。 チームは git タグ ( v1.0 など) を使用して、リポジトリの履歴内のポイントをマークし、履歴内のその時点のリポジトリの状態を表示できます。 Git - タグ付けを参照してください。

Git リポジトリ ウィンドウの git タグを示すスクリーンショット。

[分岐] / [タグ] を選択すると、右側に [グラフ] セクションと [コミット] セクションが表示されます。

グラフ: このセクションでは、ブランチの状態を視覚化します。 次の 3 つのサブセクションがあります。

  • [Incoming]\(入力方向\) には、自分のチームが貢献している入力方向のコミットが表示されます。
  • [Outgoing]\(出力方向\) には、まだプッシュしていないローカル コミットが表示されます。
  • ローカル履歴 には、ローカル リポジトリによって追跡されたコミットの残りの部分が表示されます。

コミット: このセクションを開くには、[ Graph ] セクションでコミットを選択します。 コミットによって導入された変更は、それらを選択することで確認できます。これは違いを示しています。 たとえば、前のスクリーンショットは、1 つのコミットが Resize.cs ファイルに導入した変更を示しています。

コミットを詳細に参照する

Alt+上方向キーまたは Alt+下矢印のキーボード ショートカットを使用すると、左側のパネルのセクション間を移動できます。

ブランチを切り替えることなく、任意のローカルブランチまたはリモートブランチを参照できます。 フォーカスするコミットが見つかると、[ 新しいタブで開く] ボタンを選択して、別のタブでコミットを開きます。

新しいタブでコミットを開く方法のスクリーンショット。

コミットの詳細のタブのスクリーンショット。

コミットの詳細のタブのスクリーンショット。

ヒント

コミットを全画面表示で表示するには、[ コミット ] タブをデタッチし、[最大化] ボタンを使用して [コミット ] ウィンドウを 最大化 します。 [Diff Configuration]\(差分構成\) (歯車アイコン) を選択して、お気に入りの 差分構成 を選択することもできます。

差分構成を含む全画面表示のコミットの詳細のスクリーンショット。

ヒント

コミットを全画面表示で表示するには、[ コミット ] タブをデタッチし、[最大化] ボタンを使用して [コミット ] ウィンドウを 最大化 します。 [Diff Configuration]\(差分構成\) (歯車アイコン) を選択して、お気に入りの 差分構成 を選択することもできます。

差分構成を含む全画面表示のコミットの詳細のスクリーンショット。

Pull Request

ブランチとコミットを確認している場合は、左側のパネルにある Pull Requests に切り替えてください。

[ Pull Requests] セクションには、アクティブなプル要求の一覧が表示されます。

プル リクエストを参照して開く

いずれかのプル リクエストを選択すると、ブランチをチェックアウトせずに埋め込みレビュー ビューを開くことができます。 Git Repository ウィンドウ (View>Git Repository)、Git Changes、または Git>GitHub (または Azure DevOps) >View Pull Requests からプル リクエストを見つけます。

左側の pull request リストと右側の選択した pull request の概要のスクリーンショット。説明と変更されたファイルが表示されています。

  • プル要求の説明、変更されたファイル、コミット、関連アイテム、レビュー担当者を 1 つのビューで表示します。
  • 作業ブランチを中断することなく、アクティブなプル要求を切り替えます。
  • プル リクエスト内の個々のコミットの詳細と変更を表示します。

コメントとディスカッション

差分ビューにフィードバックを直接残し、ブラウザーに切り替えずに会話を続けます。

応答と解決アクションを含むインライン pull request コメント スレッドを含むファイルの相違のスクリーンショット。

  • 特定の行にインライン コメントを追加し、コメントに返信し、スレッドを解決します。
  • [変更] リストで、ファイルごとのコメント インジケーターを表示します。
  • Web エクスペリエンスと同様に、インライン画像と書式設定されたテキストをコメントでレンダリングします。

承認、完了、マージ

準備ができたら、Visual Studioで pull request を承認して完了します。 投票アクションと完了アクションは複数のビューから使用できるため、変更を確認しながら承認できます。

  • pull request を承認します。 Azure DevOpsのドロップダウンから、その他の投票オプションを利用できます。
  • [概要] タブで、ステータスチェック、マージ競合、および必須の承認を表示します。
  • 下書きに変換する、破棄する、または閉じるオプションを使用して、プル リクエストを完了またはマージします。

ファイルおよび差分ビューの pull request にコメントを付ける詳細なワークフローについては、「 pull request をVisual Studioを参照してください。

pull request を含む Copilot Chat ワークフローについては、Copilot Chat に pull request を追加するを参照してください。

マルチブランチ履歴の表示

バージョン 17.7 の新機能: Git Repo ウィンドウを開くと、単一ブランチ ビューから開始します。 その後、任意のブランチを選択して、ブランチとそのコミットの両方をマルチブランチ履歴ビューに追加できます。これにより、複数のブランチとの対話をより効率的にする視覚的な手掛かりが追加されます。

Visual Studio のマルチブランチ履歴ビューのスクリーンショット。

[ローカル履歴] ビューの左側には、線の色分けと分岐ラベルの両方があり、各ブランチに属するコミットを簡単にトレースできます。 テーブルの上部にある分岐の一覧を使用すると、分岐間をより簡単にスクロールし、グラフに表示される分岐をすぐに把握できます。

[分岐/タグ] セクションで、ブランチの上にマウス ポインターを置くと、[ 履歴の分岐の切り替え ] ホバー ボタンが表示されます (アイコンは目のように見えます)。 ホバー ボタンを使用すると、コミット履歴ビューに表示するブランチを選択できます。

コミット履歴ビューの上部にあるツール バー ボタンを使用して、ブランチのビューとフィルターをカスタマイズできます。

  • 最初の親のみを表示: コミット履歴を、独自のコミットシーケンスを持つサイドブランチではなく、単一行としてのみ表示するように履歴を制限します。

  • [ローカルブランチを表示]: 履歴ビューでローカルブランチのラベルを表示するかどうかを切り替えます。

  • リモート ブランチの表示: 表示しているコミット履歴に影響するリモート ブランチのラベルを表示するかどうかを切り替えます。

  • [タグの表示]: タグのラベルを表示するかどうかを切り替えます。

    ローカルブランチの表示リモートブランチの表示、および タグの表示 はすべて、履歴ビューの左側に表示されるコミットのラベルインジケーターを参照します。

    履歴ビューのブランチとタグのインジケーター ラベルを示すスクリーンショット。

バージョン 17.14 の新機能: 同期されていないコミットに焦点を当てるには、[ 送信/受信のみ 表示] ツール バー ボタンを使用して、履歴ビューを変更して、送信コミット (現在のブランチからまだプッシュされていません) と受信コミット (リモートの新機能) のみを表示できます。

[送信/受信専用の表示] ツール バー ボタンが表示された [Git リポジトリ] ウィンドウを示すスクリーンショット。

履歴ビューの任意の場所を右クリックして、コンテキスト メニューの [ 送信/受信のみ表示 ] を選択することもできます。

コミットを比較する

ブランチ内の 2 つのコミットを比較するには、 Ctrl キーを使用して、比較する 2 つのコミットを選択します。 次に、そのうちの 1 つを右クリックし、[ コミットの比較] を選択します。

2 つのコミットを比較する方法のスクリーンショット。

2 つのコミットを比較する方法のスクリーンショット。

比較されたコミットのスクリーンショット。

比較されたコミットのスクリーンショット。

ヒント

コミットの詳細と同様に、[新しいタブで開く] ボタンを使用すると、比較を別のタブで開いたり、画面上で最大化したりできます。

変更の概要を使用してコミット スコープを確認する

Git>View ブランチ履歴で、コミットを開き、[変更の概要を開く] を選択します。 Visual Studioは、複数のファイルから変更された行を 1 つの統合ビューに表示します。これは、ファイルごとの詳細なレビューの前に高速パスに役立ちます。

コミットの詳細で変更の概要を開くを示すスクリーンショット。

コミットからブランチを作成する

Visual Studio では、Git リポジトリ ウィンドウの Git Graph ペインを使用して、以前のコミットからブランチを作成できます。 これを行うには、新しいブランチを作成するコミットを右クリックし、[ 新しいブランチ] を選択します。

[Git リポジトリ] ウィンドウの [Git Graph] ペインのスクリーンショット。

[Git リポジトリ] ウィンドウの [Git Graph] ペインのスクリーンショット。

このアクションの同等のコマンドは、git branch <branchname> [<commit-id>] です。

ブランチの比較

ブランチを比較すると、2 つのブランチ間の違いの概要が示されます。これは、プル要求の作成、マージ、またはブランチの削除を行う前に役立ちます。

Git がブランチを比較する方法を示す図。

Visual Studio を使用して現在チェックアウトされているブランチを他のブランチと比較するには、ステータス バーと Git 変更ツール ウィンドウでホストされているブランチ ピッカーを使用して、比較対象のローカルブランチまたはリモート ブランチを選択できます。 対象のブランチを右クリックし、[ Current Branch と比較] を選択します。 または、Git リポジトリ ウィンドウのブランチ リストを使用して、同じコマンドにアクセスすることもできます。

ブランチ比較のエントリ ポイントを示すアニメーション。

[ 現在のブランチと比較 ] を選択すると、比較ブランチ エクスペリエンスが開き、[ 変更] リスト内を移動して、比較するファイルを選択できます。

差分ビューを使用して分岐を比較する方法を示すスクリーンショット。

差分ビューを使用して分岐を比較する方法を示すスクリーンショット。

ヒント

インライン差分を使用する場合は、[Diff Configuration Options]\(差分構成オプション\) 歯車アイコンを使用してインライン差分ビューに切り替えることができます。 使用できる [Diff Configuration Options]\(差分構成オプション\) を示すスクリーンショット。

コミットのチェックアウト

コミットをチェックアウトすると、複数の方法で役立つ場合があります。 たとえば、リポジトリの履歴の前のポイントに戻って、コードを実行またはテストできます。 また、リモート ブランチ (同僚のブランチなど) のコードを確認する場合にも役立ちます。 そうすることで、ローカル ブランチに貢献する予定がない場合は、ローカル ブランチを作成する必要はありません。 この場合は、確認するリモート ブランチの先端だけをチェックアウトすることができます。

Git チェックアウト コミット プロセスを示す図。

Visual Studio で以前のコミットをチェックアウトするには、 Git リポジトリ ウィンドウを開き、戻るコミットを右クリックして チェックアウト (–detach) を選択します。 コミットをチェックアウトすると、デタッチされた HEAD 状態になるという確認ダイアログが Visual Studio に表示されます。 つまり、リポジトリの HEAD は、ブランチではなくコミットを直接指し示します。

チェックアウト コミットのエントリーポイントを表すアニメーション。

デタッチされたヘッド状態になったので、自由にコードを実行してテストしたり、変更を調査してコミットしたりすることもできます。 探索が完了し、ブランチに戻りたい場合は、既存のブランチをチェックアウトして変更を破棄するか、新 しいブランチを最初に作成 して変更を保持するかを選択できます。

重要

デタッチされたヘッド状態で作成されたコミットはどのブランチにも関連付けられていないので、ブランチをチェックアウトした後に Git によってガベージ コレクションされる可能性があります。 このため、変更を保持するには、ブランチをチェックアウトする前に新しいブランチを作成することをお勧めします。 たとえば、新しいブランチを作成せずに、メインをチェックアウトすると、コミット C5 と C6 がガベージ コレクションされます。 Git でのデタッチされたヘッド コミットを示す図。

デタッチされたヘッドの状態の詳細については、 デタッチされたヘッド Git のドキュメントを参照してください。

リモート ブランチの先端をチェックアウトすると、プル要求をすばやく確認し、最新の更新プログラムを評価するのに役立ちます。 Visual Studio でこれを行うには、まず、リモート リポジトリから最新の更新プログラムをフェッチして取得します。 次に、確認するリモート ブランチを右クリックして、[先頭のコミットをチェックアウト] を選びます。

[Checkout Tip Commit] オプションを示すスクリーンショットです。

Git Blame で行ごとの変更履歴を表示する

Git Blame は、ファイル内のコードの各行を最後に誰が変更したかに加え、いつ、なぜその変更が行われたかを表示します。 この機能は、特定のコード変更の背後にある履歴とコンテキストを理解したり、バグの発生元を追跡したり、特定の実装の作成者を特定したりする必要がある場合に便利です。

Git Blame 注釈を表示する

Git Blame 注釈は、コード エディターまたはソリューション エクスプローラーから直接表示できます。

コード エディターから:

  1. エディターでファイルを開きます。
  2. コード エディター内の任意の場所を右クリックします。
  3. Git>Blame (注釈付け) を選択します。

ソリューション エクスプローラーから:

  1. ソリューション エクスプローラーでファイルを右クリックします。
  2. Git>Blame (注釈付け) を選択します。

Blame 注釈はエディターの左余白に表示され、作成者名、コミット日、コミットリンクを示します。 ファイルがエディターで開き、Blame 注釈が表示されます。

Blame 注釈からコミットの詳細を確認する

エディターに Blame 注釈が表示されたら、それらを操作して詳細情報を確認できます。

  • コミットをクリックして詳細を表示します。完全なコミットを表示できます。ここで、そのコミットで変更されたすべてのファイルを確認し、現在のバージョンと以前のバージョンを比較するなど、追加のオプションにアクセスできます。

ヒント

Git Blame は、予期しない動作を理解したり、特定の変更がなぜ行われたのかを突き止めたりするのに特に役立ちます。

Git Blame を使用できない場合

Git Blame を利用できるのは、Git リポジトリで追跡されており、コミットされているファイルのみです。 Git>Blame オプションが表示されない場合は、次の表で一般的な原因と解決策を確認してください。

シナリオ Solution
ファイルが追跡されない [Git の変更] ウィンドウを確認します。 ファイルが [追跡されていないファイル] の下に表示される場合は、最初にステージングしてコミットします。
ファイルは .gitignore にあります .gitignoreからファイルを削除し、リポジトリに追加してコミットします。
バイナリ ファイル 非難は、ソース コード (.cs.js.py)、構成ファイル (.json.xml)、ドキュメント (.md.txt) などのテキスト ファイルでのみ機能します。 バイナリ ファイル (.dll.exe、イメージ) の場合は、代わりに Git>View History を使用します。
コミット履歴なし ファイルを含むコミットを少なくとも 1 つ行います。
デタッチされた HEAD の状態 ステータス バーを確認します。 デタッチした場合は、 Git リポジトリ ウィンドウからブランチをチェックアウトします。 チェックアウトコミットを参照してください。
非常に大きなファイル パフォーマンスを高めるには、非常に大きなファイルで[非難]を無効にできます。 代わりに Git>View History を使用してください。

すべてのシナリオの代替: ファイルを右クリックし、 Git>View History を選択して、ファイルを変更したすべてのコミットを表示します。