git reset --hard でファイルの変更は取り消せない
ファイルの変更を取り消そうと思って
$ git reset --hard file
としたら
fatal: Cannot do hard reset with paths.
と怒られた。
$ git reset --hard HEAD file
とか
$ git reset --hard HEAD -- file
とか試してもやっぱり怒られる。
じゃあどうすればファイルの変更を取り消せるのかというと
$ git checkout file
とすれば良いみたい。
なんで reset では取り消せないのか調べてみたところ、
git reset [-q] [
git-reset(1)] [--] …
git reset [--patch|-p] [] [--] [ …]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] []
とあった。
つまり、--hard を指定する場合、引数には
一方、checkout の場合、
git checkout [-q] [-f] [-m] [
git-checkout(1)]
git checkout [-q] [-f] [-m] [--detach] []
git checkout [-q] [-f] [-m] [[-b|-B|--orphan]] [ ]
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [] [--] …
git checkout [-p|--patch] [] [--] [ …]
とのことで、こちらは問題なくファイルを指定できる。
checkout なんてブランチの切り替えくらいにしか使ってなかったけど、
なかなか git も奥が深い。