gitで以前からアップデートされた変更のdiffをすべてみる
$ svn update
などをしたときに、リビジョンがいくつになったというのは表示されるのだけど、アップデートする前にsvn infoを打たないとアップデートする前はどのリビジョンだったかわからなくなってしまうことだった。また、仮にsvn infoなどでリビジョン番号を事前にメモっておいてもまたそれをdiffを見るときに指定したりしないといけなかったりしてなかなかめんどくさかった( ひょっとすると何かうまいやりかたがあるのかもしれないけど )
ついこの前gitのドキュメントを漁っていたらReflogという仕組みをみつけて、これは非常に便利だと思ったので紹介する。
gitはツリーの状態が更新されると、その履歴を保持しておいてくれるらしい。
ツリーがいつ更新されるかというと、コミットしたときや、rebaseやmergeなどをしたときなどである。
reflogはbranch名@{reflog表現}のように書くことができ、gitのコミットのSHA1などを渡すところにならたいてい指定できる。
HEAD@{1}なら、今いるブランチの1つ前の状態のオブジェクトのSHA1を差している。
なので、何か日々更新をチェックしたりしているリポジトリがあり、
$ git remote update $ git rebase origin/master $ git whatchanged -p HEAD@{1}..HEAD
のようにすると、前回アップデートしたときからの差分のdiffをまとめて見ることができるのだ。
ということで、
のようにしてgit newで前回アップデートしたところからのdiffを眺められるのように設定してる。