git reset --hardで新規ファイルの扱い

$ git --version
git version 1.8.3.2

$ touch newfile
$ git status -s 
?? newfile

$ git reset --hard
$ git status -s
?? newfile

このようにまだgitに管理されてないファイルはgit reset --hardしても削除されない。これはよい。

ただ、次のように、インデックスに追加した後にgit reset --hardするとファイルが消える。

$ git add newfile
$ git status -s
A  newfile

$ git reset --hard
$ git statsu -s # no output
$ ls newfile
ls: newfile: No such file or directory

なんでこうなるのかイマイチよくわからない。

ちなみにcheckoutだとインデックスに追加してようがしていまいが何も影響しない。

$ git status -s 
?? newfile

$ git checkout HEAD .
$ git status -s 
?? newfile

$ git add newfile
$ git status -s
A  newfile

$ git checkout HEAD .
$ git status -s
A  newfile

新規ファイルの扱い以外は`reset --hard`と`checkout HEAD .`は同じ挙動だと思う。たぶん。