git checkout
git checkout <commit> <file>
fileが、指定した commit に含まれそのファイルの完全なコピーとなり、さらにそれをステージングエリアに追加します。
git checkout <commit>
作業ディレクトリ内のすべてのファイルを指定したコミットと同一の状態に更新するコマンド
git checout -- file
ファイル名とブランチ名がたまたま重複してしまった場合に誤動作してしまう危険性があります。その曖昧さを無くすための指定が「--」ということらしいです。