git diff chỉ so sánh working tree với index, không phải HEAD. Muốn so sánh với HEAD phải dùng git diff HEAD
So sánh cùng một tệp giữa hai commit
git diff <commit 1> <commit 2> -- <file>
So sánh hai tệp khác nhau giữa hai commit
git diff <commit 1>:<file 1> <commit 2>:<file 2>

Nguồn:: How to compare the working tree with a commit?