Visual Studio で Git リポジトリを管理する
Git リポジトリ ウィンドウには、Git リポジトリを管理し、チームのプロジェクトを最新の状態に保つのに役立つ全画面表示の Git エクスペリエンスが用意されています。 たとえば、コミットをリセットしたり、元に戻したり、チェリーピックしたりする必要がある場合や、コミット履歴を整理する必要がある場合があります。 Git リポジトリ ウィンドウは、ブランチを視覚化して管理するのにも最適な場所です。
Visual Studio を使用したバージョン管理は、Git で簡単に行うことができます。 また、GitHub や Azure DevOps など、選択した Git プロバイダーをリモートで操作できます。 または、プロバイダーなしでローカルで作業することもできます。
Git リポジトリ ウィンドウを開く
Git リポジトリ ウィンドウを開くには、[表示]>[Git リポジトリ] を選択するか(または Ctrl+0、 Ctrl+Rを押します)、または Ctrl+Q を押し、[機能]にて、Git リポを検索します。
GitHub Copilot Chat を使用してコミットを説明する
Visual Studio 2022 バージョン 17.10 Preview 2 以降と GitHub Copilot 拡張機能では、AI を使用して、そのコミットの変更を説明する詳細なコミットの説明を生成できます。 [Explain] ボタンを押して、GitHub Copilot にコミットの説明を作成するよう要求します。 GitHub Copilot をインストールするには、「Visual Studioでの GitHub Copilot のインストールと管理」を参照してください。
最後のコミットを変更する (修正)
最後のコミットの更新は、Git で「amending」と呼ばれ、一般的なユースケースです。 コミット メッセージを更新するだけで済む場合や、直前の変更を含める必要がある場合があります。
次のコマンドを使用して、コマンド ラインでコミットを修正できます。
git commit --amend
Git リポジトリ ウィンドウでは、最新のコミット メッセージを簡単に更新できます。 最後のコミットのコミットの詳細をダブルクリックして開き、コミット メッセージの横にある [編集 オプションを選択します。
コミット メッセージの編集が完了したら、[修正] を選択します。
最後のコミットにコード変更を含める必要がある場合は、Git の変更 ウィンドウで行うことができます。 [修正] チェック ボックスをオンにし、変更をコミットします。
最新のメッセージ以外のコミット メッセージを変更する方法など、修正の詳細については、Git Web サイトの「Git Tools - 書き換え履歴」を参照してください。
コミットをマージする (スカッシュする)
一連のコミットをマージするために、Git にはコミットを 1 つのコミットに縮小するオプションが用意されています。 このオプションは、頻繁にコミットを行い、最終的にリモート リポジトリにプッシュする前にクリーンアップするコミットの長い一覧が表示される場合に役立ちます。
次のコマンドを使用して、コマンド ラインで 2 つのコミットをスカッシュできます。
git rebase -i HEAD~2
次に、pick
を squash
に更新し、保存して、コミットメッセージを更新します。
Visual Studio でコミットをマージするには、Ctrl キーを使用して、マージする複数のコミットを選択します。 その後、右クリックして [コミットのスカッシュ] を選択します。 Visual Studio ではコミット メッセージが自動的に結合されますが、更新されたメッセージを提供することをお勧めします。 コミット メッセージを確認して更新したら、スカッシュ ボタンを選択します。
スカッシュの詳細については、Git Web サイトの「Git のさまざまなツール - 履歴の書き換え」を参照してください。
ブランチをマージしてリベースする
Git ブランチを使用してさまざまな機能に取り組んでいる場合は、ある時点で他のブランチに導入された更新プログラムを含める必要があります。 これは、機能ブランチで作業している間に発生する可能性があります。 また、機能ブランチの作業が完了し、変更を別のブランチに追加して維持する必要がある場合にも発生する可能性があります。 Git では、ブランチをマージまたはリバスすることで、これらの更新プログラムを含めることができます。
手記
次の手順では、機能ブランチの名前の例として New_Feature を使用します。 これはご自分のブランチの名前に置き換えてください。
コマンド ラインでメイン ブランチを機能ブランチにマージするには、次のコマンドを使用します。
git checkout New_Feature
git merge main
Visual Studio で同じ操作を行うには、ブランチ リストで機能ブランチをダブルクリックして、機能ブランチを確認します。 その後、[メイン] を右クリックし、['メイン' を 'New_Feature' にマージ] を選択します。
コマンド ラインでメイン ブランチを機能ブランチにリベースするには、次のコマンドを使用します。
git checkout New_Feature
git rebase main
Visual Studio で同じ操作を行うには、ブランチ リストで機能ブランチをダブルクリックして、機能ブランチを確認します。 その後、[メイン] を右クリックし、['New_Feature' を 'メイン' にリベース] を選択します。
マージ、リベイシング、ブランチの一般的な詳細については、Git Web サイトの git Branching 参照してください。
コミットをコピーする (チェリーピックする)
cherry-pick オプションを使用して、あるブランチから別のブランチにコミットをコピーします。 マージやリベースとは異なり、チェリーピックはブランチ内のすべての変更ではなく、選択したコミットからの変更のみを取り込みます。 チェリー狩りは、これらの一般的な問題に取り組むための優れた方法です。
- 誤って間違ったブランチでコミットする。 変更点を正しいブランチにチェリーピックし、元のブランチを前のコミットにリセットします。
- 機能ブランチで行われた一連のコミットを引き出す。したがって、すぐにマージしてメイン ブランチに戻します。
- ブランチをリベースせずに、メインブランチから特定のコミットを取り込む。
コマンド ラインを使用してコミットから現在のブランチに変更をコピーするには、次のコマンドを使用します。
git cherry-pick 7599e530
Visual Studio で同じ操作を行うには、コミットをチェリーピックしたいブランチを1回クリックしてプレビューします。 次に、対象のコミットを右クリックし、チェリーピックを選択します。
操作が完了すると、Visual Studio に成功メッセージが表示されます。 チェリーピックしたコミットは [送信] セクションに表示されます。
チェリー ピック コミットの詳細については、cherry-pick コマンド のGit Web ページを参照してください。
変更を元に戻す
revert コマンドを使用して、共有ブランチにプッシュされたコミットで行われた変更を元に戻します。 revert コマンドは、前のコミットで行われた変更を元に戻す新しいコミットを作成します。 revert コマンドではリポジトリ履歴が書き換えられません。これにより、他のユーザーと作業するときに安全に使用できます。
コマンド ラインを使用してコミットで行われた変更を元に戻すには、次のコマンドを使用します。 サンプル ID を、ブランチ内の実際のコミットの ID に置き換えます。
git revert 53333305
git commit
前の例では、コマンドはコミット 53333305で行われた変更を元に戻し、ブランチに新しいコミットを作成します。 元のコミットは Git 履歴に残っています。 Visual Studio で同じ操作を行うには、元に戻したいコミットを右クリックし、「元に戻す」を選択します。 アクションを確認し、操作が完了すると、Visual Studio に成功メッセージが表示され、新しいコミットが 送信 セクションに表示されます。
新しいコミットを選択して、元に戻されたコミットの変更が元に戻されることを確認します。
[ 元に戻す] メニュー項目は、マージ コミットや Git 操作の実行中など、特定の状況で淡色表示 (無効) になる場合があります。
変更を元に戻す方法の詳細については、Git Web ページで revert コマンドを参照してください。
ブランチを前の状態にリセットする
reset コマンドを使用して、ローカル リポジトリ内のブランチを以前のコミットの内容に戻します。 ブランチをリセットするコミット以降に発生したすべての変更が、このアクションにより取り消されます。
警告
他のユーザーの作業を削除する可能性があるため、共有ブランチをリセットしないでください。 代わりに revert コマンドを使用してください。
コマンド ラインを使用してブランチを以前の状態にリセットするには、次のコマンドを使用します。 サンプル ID を、ブランチ内の実際のコミットの ID に置き換えます。
git reset --hard 53333305
コマンドの --hard
部分は、ファイルを以前のコミットの状態にリセットし、ステージングされた変更をすべて破棄するように Git に指示します。 Visual Studio で同じようにするには、ブランチをリセットするコミットを右クリックしてから、[リセット]>[変更を削除 (--hard)] の順に選択します。
ブランチのリセットの詳細については、reset コマンド のGit Web ページを参照してください。
関連コンテンツ
- 複数のリポジトリ を操作する
- Visual Studio での Git の体験