gitの~と^の違い

http://qiita.com/chihiro/items/d551c14cb9764454e0b9
mergeコミットの親コミットを示すときに、数字を指定した表記で差が出る。
head~2は、headのメインである親コミットの親コミットを指す。
head^2は、headのサブである親コミットを指す。

a---b--c------head
 \--------e--/

というコミットグラフがあったとき、

head~→c
head^→c
head~~→b
head^^→b
head~2→b
head^2→e ※これが違う。