Gitのような複雑なシステムは使い方が難しい。 ある程度使い方を知っている場合でも、あまり一般的でない機能を使うのは難しい。 たとえば以下のような場合はどういうコマンドを使えばいいだろうか? ひとつ前のバージョンのREADME.mdからの変更を見たい README.mdは3日前からどう変わった? package.jsonにcoffeeという名前が入ったのはいつ? ここ1週間ぐらい変更されてないファイルは? 最近大量に修正したファイルはどれだっけ? 最初の例について考えてみる。 Gitでは「HEAD^」「HEAD^^」のような表現で昔のコミットを参照できるので $ git diff HEAD^ README.md のようにすればひとつ前のコミットのREADME.mdとの比較ができるが、 最近のコミットでREADME.mdを編集していなかった場合は このコマンドを起動しても何も出力されない。