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
git diff <commit 1> <commit 2> -- <file>
git diff <commit 1>:<file 1> <commit 2>:<file 2>

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