変更を元に戻す

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git リポジトリ内の変更を元に戻す場合は、まず元に戻す変更の種類を決定します。 たとえば、次の操作を行います。

  • ファイルを前回コミットしたバージョンに戻して、ファイルに対する確定されていない変更を破棄します。 ファイルを任意のコミットされたバージョンに戻すこともできます。
  • ブランチを以前のコミットにリセットして、以前の状態に戻します。
  • 変更を元に戻す新しいコミットを作成して、共有コミットによって行われた変更を元に戻します。 この方法では既存のコミット履歴が再書き込みされないので、プッシュされ、他のユーザーが使用しているコミットによって行われた変更を元に戻す場合に適しています。
  • 前回のコミットを修正して、内容またはメッセージを変更します。 詳細については、「前回のコミットを更新する方法」を参照してください。
  • 修正を含む新しいコミットを作成して、以前のコミットで発生した問題を修正します。 詳細については、「コミットを作成する方法」を参照してください。

この記事では、次の方法について説明します。

  • ファイルに対する確定されていない変更を破棄する
  • ブランチを以前の状態に戻す
  • 共有コミットによって行われた変更を元に戻す

ファイルに対する確定されていない変更を破棄する

ファイルに変更を加えたが、それらの変更をコミットしていない場合は、Git チェックアウト を使用して変更をすばやく破棄し、ファイルを前回コミットされたバージョンに戻すことができます。

Git checkout でコミット ID を指定すると、ファイルを任意のコミットされたバージョンに戻すこともできます。

警告

Git checkout によって破棄される変更を再適用する可能性がある場合は、代わりにそれらの変更をスタッシュすることを検討してください。

Visual Studio 2022 は、[Git] メニュー、[Git 変更]、および [ソリューション エクスプローラー] のコンテキスト メニューを使用して、Git バージョン管理エクスペリエンスを提供します。 Visual Studio 2019 バージョン 16.8 には、チーム エクスプローラーの Git ユーザー インターフェイスも用意されています。 詳細については、「Visual Studio 2019 - チーム エクスプローラー」タブを参照してください。

Visual Studio では、ファイルを前回コミットされたバージョンに戻すことで、ファイルに対する確定されていない変更の破棄がサポートされています。

[Git 変更] ウィンドウで、破棄する変更を含むファイルを特定します。 [ステージされている変更] セクションにファイルがある場合は、それを右クリックして [アンステージ] を選びます。 [変更] セクションに、アンステージされたファイルが表示されます。

Visual Studio のステージされたファイルに対するコンテキスト メニュー オプションのスクリーンショット。

ファイルが [変更] セクションにある場合は、それを右クリックし、[変更を元に戻す] を選んで、前回のコミット以降のファイルに対するすべての変更を破棄します。

Visual Studio の変更されたファイルに対するコンテキスト メニュー オプションのスクリーンショット。

ブランチを以前の状態に戻す

Git reset を使用してブランチを以前のコミットにリセットすることで、ブランチを以前の状態に戻すことができます。 Git reset は、すべてのブランチ フォルダー内のすべてのファイルに影響します。

Git reset にはいくつかのオプションがあります。 既定のオプションでは、ブランチを以前のコミットに戻しますが、後続のすべての変更は確定されていない変更として保持されます。 もう 1 つのオプションでは、そのコミット以降のすべてのブランチ ファイルに対するすべての変更を破棄して、ブランチを以前のコミットに戻します。

警告

前回のコミットがプッシュされ、他のユーザーと共有されている場合は、前回のコミットより前のコミットにブランチをリセットしないでください。 そうすると、ローカル ブランチの履歴がリモート ブランチの履歴と一致しなくなります。 共有ブランチについては、「共有コミットによって行われた変更を元に戻す」を参照してください。

  1. メニュー バーから [Git] > [View Branch History] (ブランチ履歴の表示) を選んで、現在のブランチの [履歴] タブを開きます。

    Visual Studio の [Git] メニューの [View Branch History] (ブランチ履歴の表示) オプションのスクリーンショット。

  2. 現在のブランチの [履歴] タブで、リセットするコミットを右クリックしてから、[リセット] > [変更を削除 (--hard)] を選んで、選択したコミットにブランチをリセットし、そのコミット以降のすべてのブランチ ファイルに対するすべての変更を削除します。 または、[リセット] > [変更を保持 (--mixed)] を選んで、選択したコミットにブランチをリセットし、後続のすべての変更をステージされていない変更として保持します。

    Visual Studio の [履歴] ウィンドウのコミットに対するコンテキスト メニューの [リセット] オプションのスクリーンショット。

共有コミットによって行われた変更を元に戻す

コミットによって行われた変更を元に戻すには、Git revert を使用して、それらの変更を元に戻す新しいコミットを作成します。 Git revert では、元のコミットは削除されません。 この方法は、Git revert によって以前のコミット履歴が変更されないので、共有コミットによって行われた変更を元に戻す場合に適しています。そのため、ローカルとリモートのブランチ履歴は引き続き一致します。

  1. メニュー バーから [Git] > [View Branch History] (ブランチ履歴の表示) を選んで、現在のブランチの [履歴] タブを開きます。

    Visual Studio の [Git] メニューの [View Branch History] (ブランチ履歴の表示) オプションのスクリーンショット。

  2. 現在のブランチの [履歴] タブで、元に戻すコミットを右クリックし、[復元] を選んで、選択したコミットによって行われた変更を元に戻す新しいコミットを作成します。

    Visual Studio の [履歴] ウィンドウのコミットに対するコンテキスト メニューの [復元] オプションのスクリーンショット。

次のステップ