Githubでコミットやブランチやタグ間のdiffを見る、Compare viewを使う
GithubにCompare viewという機能があります。とても便利なんですが、どういうわけかCompare viewへのリンクが見当たりません*1。URLを自分で入力すれば使えるんですが、よく忘れるのでメモしておきます。見落としてました。Branch List(例えばhttps://github.com/cakephp/cakephp/branches)からCompare viewに入れます。コメントで教えてもらいました。futti_kさんありがとうございます。
利用してるコードを更新するかどうか、内容を見てから決めたい時によく使います。git cloneしてるので、コマンドラインからでも比較は出来るんですが、やっぱりGUIのほうが見やすいです。
使い方
リポジトリURL/compare/コミットId or タグ or ブランチ...コミットId or タグ or ブランチ
こんな感じのURLを入力するんですが、正直この書き方だと分かりにくいので、具体例で説明します。例としてCakePHPのリポジトリを使います。
とある時点のコミットから最新までを比較
https://github.com/cakephp/cakephp/compare/a0a87ade5ad308c36baf9ede9cf7d96e666acb95...master
比較対象を...で繋ぎます。左側に古いものを、右側に新しいほうを指定します。
とある時点のコミットから、別のコミットまでを比較
タグ1.3.6からタグ1.6.7までを比較
https://github.com/cakephp/cakephp/compare/1.3.6...1.3.7
流石にCakePHPのタグからタグの比較は、コミットが多すぎるのか表示に時間がかかります。
タグ1.3.6からブランチ1.3までを比較
https://github.com/cakephp/cakephp/compare/1.3.7...1.3
タグとブランチの比較も出来ますが、ちょっと注意が必要です。タグはある時点のコミットで固定されているのに対し、ブランチはそのバージョンの開発が続いているならばコミットされ続けています。この例の場合、ブランチ1.3とは1.3系のことであり、今後1.3.8というタグがつくであろうコミットを含んでいます。なのでタグ1.3.7の方が古いです。この辺は、プロジェクトのブランチ・タグ付け方にも寄るかもしれません。
https://github.com/blog/612-introducing-github-compare-viewCompare View URLs
We wanted Compare View to be something we could link to from external sites and services anytime we were referring to a range of commits in a git repository. As such, we thought it would be worthwhile to document the basic structure of a Compare View URL:
http://github.com/
//compare/[...]Where
andare obvious, andandare branch names, tag names, or commit SHA1s specifying the range of history to compare. Ifis omitted, the repository's default branch is assumed.
Github blogにこの機能を紹介するエントリーがあります。英語ですが、Compare viewのURLとしてはこんな文法のようです。上記で紹介した組み合わせ以外にも出来る事があるかもしれません。
gistでは使えない
Githubの提供するgistでも出来るかなと思ったんですが、gistではComapre viewは提供されてないようです。検索してみたところ、Greasemonkeyスクリプトや拡張機能で何とかしている人がいるみたいです。gistのコードの間違いを直した時なんか、Comapre viewがあればそれを貼るだけで修正した事が一目瞭然で便利そうなんですけどね。
*1:もしかしたら見落としてるだけ?