間違えてコミットしてしまったファイルを、前のバージョンに戻したい。いくつ前のバージョンに戻したらいいかわからない。という時に。

作業手順

ファイルの中身を確認

% git show HEAD^:path/to/file

% git show HEAD^^:path/to/file

をして、以前のバージョンのファイルの中身を覗く。

特定のバージョンにファイルを戻す

バージョンがわかったら戻す。

% git checkout HEAD^ path/to/file

すると以前のバージョンの内容に戻ってる。

使用例

どんな場合に使うか(使ったか)
今回↓のような状態で使った。

% cat index.html

ここは○○のホームページです

  // 普段の内容
% vi index.html

あけましておめでとうございます。ここは○○のホームページです

  // 年始用
% git commit -m '年始用'

年始用をmasterで作業しない方がよかったかな、index.htmlを前の普段の状態に戻しておこう。年始用も今後また使うかもしれないので一応残しておきたい。

% git branch newyear  // newyearというブランチを作成
% git branch
* master
  newyear
% git show HEAD^:index.html

ここは○○のホームページです

  // 普段の内容
% git checkout HEAD^ index.html
% cat index.html

ここは○○のホームページです

  // 普段の内容
% git checkout newyear  // newyearブランチに切り替え
% cat index.html  // 年始用index.htmlを確認

あけましておめでとうございます。ここは○○のホームページです

  // 年始用