リポジトリを指定した時点の状態にする

ピヨベルン 3世
質問: リポジトリを過去の状態にしたい
バグの検証依頼があったのですが、古いバージョンでの検証のため、過去の状態にコードを戻して検証する必要があるのです。 リポジトリのソースコードを過去の特定の時点まで戻すにはどうすればよいですか?

リポジトリを過去の時点に一時的に変更する手順を紹介します。'

gitコマンドの場合

gitコマンドを利用する場合は次のコマンドを実行します。

git switch --detach <commit-hash>

従来の書式では以下です。

git checkout <commit-hash>

メモ
コマンドを実行するとリポジトリの状態は <commit-hash> のコミットが完了後になります。選択したコミットの反映前の状態にしたい場合は、 一つ手前のコミットのコミットハッシュの値でスイッチします。

コミットハッシュの値

commit-hashは以下のコマンドで調べられます。カレントディレクトリをリポジトリのディレクトリにして次のコマンドを実行します。

git log --oneline

元に戻す場合

masterに戻る場合は以下のコマンドを実行します。

git switch --detach master

Visual Studio での操作

Visual Studio で操作する場合です。

Visual Studioを起動しウィンドウを表示します。ローカルリポジトリを開きます。ローカルリポジトリを開くには Gitに登録されているソリューションを開くか、[Git]メニューの[ローカルリポジトリ]の項目から開きます。
リポジトリを指定した時点の状態にする:画像1

コミットの一覧を表示します。[Git変更]のパネルの[すべてのコミットを表示する]のリンクをクリックします。
リポジトリを指定した時点の状態にする:画像2

コミットの一覧が表示されます。
リポジトリを指定した時点の状態にする:画像3

コミットの一覧で戻りたい位置のコミットを選択します。
リポジトリを指定した時点の状態にする:画像4

右クリックします。ポップアップメニューが表示されますので、 [チェックアウト (--detach)]の項目をクリックします。
リポジトリを指定した時点の状態にする:画像5

以下のメッセージダイアログが表示されます。ちょっと怖いことが起きそうなメッセージに見えますが心配せず[はい]ボタンをクリックします。

メッセージ
<commit-hash> のコミット のチェックアウト

<commit-hash> のコミット をチェックアウトすると、デタッチされた HEAD 状態になります。 この状態を終了するには、新しいブランチを作成するか、既存のブランチをチェックアウトする必要があります。続行しますか?

リポジトリを指定した時点の状態にする:画像6

コミット一覧が変化します。一番上の先頭が先ほど選択したコミットになります。 この状態でリポジトリのファイルは、この時点の状態になっています。
リポジトリを指定した時点の状態にする:画像7

元に戻す場合

元に戻す場合は、[Git 変更]パネルの上部のドロップダウンリストボックスをクリックします。
リポジトリを指定した時点の状態にする:画像8

ポップアップウィンドウが表示されますので、[ローカル]のタブの[master]の項目をクリックすると最新の状態に戻ります。
リポジトリを指定した時点の状態にする:画像9

最新の状態に戻りました。
リポジトリを指定した時点の状態にする:画像10

リポジトリの状態を過去の指定した時点に戻すことができました。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2026-02-25