Visual Studio で Git リポジトリを管理する

[Git リポジトリ] ウィンドウでは、Git リポジトリを管理し、チームのプロジェクトを常に把握するのに役立つ全画面表示の Git エクスペリエンスが提供されます。 たとえば、コミットをリセットしたり、元に戻したり、チェリーピックしたり、あるいはコミット履歴を単にクリーンアップする必要がある場合があります。 [Git リポジトリ] ウィンドウは、ブランチを視覚化して管理するのに最適な場所でもあります。

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

[Git リポジトリ] ウィンドウが開きます。

[Git リポジトリ] ウィンドウを開くには、[View>Git repository] を選択するか (または Ctrl+0Ctrl+R を押す)、または Ctrl+Q を押して、[機能] の下で Git リポジトリを検索します。

最後のコミットを変更する (修正する)

最後のコミットの更新は Git では ''修正'' と呼ばれ、一般的なユース ケースです。 場合によっては、コミット メッセージの更新のみが必要であるか、過去 1 分間の変更を含める必要があります。

コマンド ラインで次のコマンドを使用して、コミットを修正することができます。

git commit --amend

[Git リポジトリ] ウィンドウを使用すれば、最新のコミット メッセージを簡単に更新できます。 最後のコミットのコミット詳細をダブルクリックして開いてから、コミット メッセージの横にある [編集] オプションを選択します。

コミット メッセージの編集のスクリーンショット。

コミット メッセージの編集が終わったら、 [修正] を選択します。

[修正] を選択して編集されたメッセージを保存するスクリーンショット。

最後のコミットにコード変更を含める必要がある場合は、 [Git 変更] ウィンドウで行うことができます。 [修正] チェックボックスをオンにしてから、変更をコミットします。

[Git 変更] ウィンドウを使用したコード変更の修正のスクリーンショット。

最新の変更以外のコミット メッセージを変更する方法など、修正の詳細については、Git Web サイトの「Git Tools - 書き換え履歴」を参照してください。

コミットをマージする (スカッシュする)

一連のコミットをマージするために、Git では複数のコミットを単一のコミットにまとめることができます。 このオプションは、頻繁にコミットを行った後、リモート リポジトリにプッシュする前にクリーンアップするコミットのリストが長くなった場合に役立つことがあります。

コマンド ラインで次のコマンドを使用して、2 つのコミットをスカッシュすることができます。

git rebase -i HEAD~2

その後、picksquash に更新し、保存し、コミット メッセージを更新します。

pick から squash への更新のスクリーンショット。

Visual Studio でコミットをマージするには、Ctrl キーを使用して、マージする複数のコミットを選択します。 その後、右クリックして [コミットのスカッシュ] を選択します。 Visual Studio によってコミット メッセージが自動的に結合されますが、更新されたメッセージを指定する方が適切な場合もあります。 コミット メッセージを確認して更新した後、 [スカッシュ] ボタンを選択します。

Visual Studio でのコミットのスカッシュのスクリーンショット。

スカッシュの詳細については、Git Web サイトの「Git のさまざまなツール - 歴史の書き換え」を参照してください。

ブランチをマージしてリベースする

Git ブランチを使用してさまざまな機能を操作する場合、ある時点で他のブランチに導入された更新を含める必要があります。 これは、機能ブランチでまだ作業している間に行う場合があります。 また、機能ブランチでの作業が終わり、変更を別のブランチに追加して保持する必要があるときに行う場合があります。 Git では、ブランチをマージまたはリベースすることによって、これらの更新を含めることができます。

Note

次の手順では、機能ブランチの名前の例として New_Feature を使用します。 これはご自分のブランチの名前に置き換えてください。

コマンド ラインでメイン ブランチを機能ブランチにマージするには、次のコマンドを使用します。

git checkout New_Feature
git merge main

Visual Studio で同じようにするには、ブランチ リストで機能ブランチをダブルクリックしてチェックアウトします。 その後、 [メイン] を右クリックし、 [Merge 'main' into 'New_Feature']('メイン' を 'New_Feature' にマージ) を選択します。

Visual Studio でのブランチのマージのスクリーンショット。

コマンド ラインでメイン ブランチを機能ブランチにリベースするには、次のコマンドを使用します。

git checkout New_Feature
git rebase main

Visual Studio で同じようにするには、ブランチ リストで機能ブランチをダブルクリックしてチェックアウトします。 その後、 [メイン] を右クリックし、 [Rebase 'New_Feature' onto 'main']('New_Feature' を 'メイン' にリベース) を選択します。

Visual Studio でのブランチのリベースのスクリーンショット。

一般的なマージ、リベース、およびブランチングの詳細については、Git Web サイトの「Git のブランチ機能」を参照してください。

コミットをコピーする (チェリーピックする)

チェリーピック オプションを使用して、ブランチ間でコミットをコピーします。 マージやリベースとは異なり、チェリーピックでは、ブランチ内のすべての変更ではなく、選択したコミットからの変更のみを取り込みます。 チェリーピックは、これらの一般的な問題に対処するための優れた方法です。

  • 誤って間違ったブランチでコミットする。 変更を正しいブランチにチェリーピックしてから、元のブランチを前のコミットにリセットします。
  • 機能ブランチで行われた一連のコミットを引き出す。したがって、すぐにマージしてメイン ブランチに戻します。
  • ブランチをリベースせずに、メイン ブランチからの特定のコミットで移植する。

コマンド ラインを使ってコミットから現在のブランチに変更をコピーするには、次のコマンドを使用します。

git cherry-pick 7599e530

Visual Studio で同じようにするには、1 回のクリックでコミットを選択してチェリーピックするブランチをプレビューします。 その後、対象のコミットを右クリックし、 [チェリーピック] を選択します。

Visual Studio でのチェリーピックのスクリーンショット。

操作が完了すると、Visual Studio に成功メッセージが表示されます。 チェリーピックしたコミットは [送信] セクションに表示されます。

コミットのチェリーピックの詳細については、cherry-pick コマンドに関する Git Web ページを参照してください。

変更を元に戻す

revert コマンドを使用して、共有ブランチにプッシュされたコミットに加えられた変更を元に戻します。 revert コマンドを実行すると、以前のコミットに加えられた変更を元に戻す新しいコミットが作成されます。 revert コマンドではリポジトリ履歴は書き換えられないため、他のユーザーとの作業を行うときに安全に使用できます。

コマンド ラインを使ってコミットに加えられた変更を元に戻すには、次のコマンドを使用します。 例の ID は、ブランチ内の実際のコミットの ID に置き換えてください。

git revert 53333305
git commit

前の例では、コマンドにより、コミット 53333305 に加えられた変更が元に戻され、ブランチに新しいコミットが作成されます。 元のコミットはまだ Git 履歴にあります。 Visual Studio で同じようにするには、元に戻すコミットを右クリックしてから、[元に戻す] を選択します。 アクションを確認し、操作が完了した後、Visual Studio に成功メッセージが表示され、 [送信] セクションに新しいコミットが示されます。

Visual Studio での元に戻すのスクリーンショット。

新しいコミットを選択して、元に戻したコミットの変更が元に戻っていることを確認します。

元に戻す操作の確認のスクリーンショット。

変更を元に戻す方法の詳細については、revert コマンドに関する Git Web ページを参照してください。

ブランチを前の状態にリセットする

reset コマンドを使用して、ローカル リポジトリ内のブランチを前のコミットの内容に戻します。 このアクションにより、ブランチをリセットするコミット以降に発生したすべての変更が破棄されます。

警告

他のユーザーの作業を削除する可能性があるため、共有ブランチはリセットしないでください。 代わりに revert コマンドを使用してください。

コマンド ラインを使ってブランチを前の状態にリセットするには、次のコマンドを使用します。 例の ID は、ブランチ内の実際のコミットの ID に置き換えてください。

git reset --hard 53333305

コマンドの --hard 部分では、ファイルを前のコミットの状態にリセットし、ステージされている変更を破棄するように Git に指示します。 Visual Studio で同じようにするには、ブランチをリセットするコミットを右クリックしてから、 [リセット]>[変更を削除 (--hard)] の順に選択します。

Visual Studio でのブランチのリセットを示すスクリーンショット。

ブランチのリセットの詳細については、reset コマンドに関する Git Web ページを参照してください。