git checkout -f について

git checkout . と違うのは新規作成なソレとか deleted なナニとかも巻戻し、なのかどうか。ちょっと確認してみます。例の場所にある Numbers なリポジトリを clone して云々な方向。

$ git clone git@github.com:gitOkinawaOrganization/GitDOJO.git

で、色々手を入れてみます。

$ cd GitDOJO
$ cp ../rbenv.sh .
$ rm README.md
$ vi Numbers

で、status かくにん してみるに以下。

$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Numbers
#       deleted:    README.md
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       rbenv.sh
no changes added to commit (use "git add" and/or "git commit -a")

ここで git checkout . してみるとどうなるか。

$ git checkout .
$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       rbenv.sh
nothing added to commit but untracked files present (use "git add" to track)

削除したものは復活してますね。Untracked なソレは無理らしい。ちなみに Untracked なソレは -f でも駄目でした。そもそも git の管理範疇に入っていないので無理と言えば無理なのかどうか。