#やりたいこと(想定シーン)
修正してaddしたり、または未addだったりの状態で、やっぱり修正必要なかったなぁって場合に前のcommit状態に戻したい。
#まとめて戻す方法
未add(ワーキングツリーのみ存在)、add済み(ワーキングツリー&インデックス存在)に関わらずこれですべて戻すことができる。
git reset --hard HEAD
#####解説
--hardオプションでインデックス、ワーキングツリー全てを戻す。
HEADは最新のcommit idのエイリアス。前回のcommitまで戻したいのだから、HEADを指定する。
※もちろんUntrackedは対象外。Untrackedを消したい場合は、コメントで教えてもらった「git clean -f」を使う。もしくは、「git add .」して一旦管理下に入れて上記を行う。
#ファイル単位で戻す方法
--hardオプションはファイルを指定できないため。
###対象がadd済みファイル(インデックス&ワーキングツリーに存在)
まずインデックスを戻して、次にワーキングツリーを戻す。
git reset HEAD <file>
git checkout <file>
###対象が未addファイル(ワーキングツリーのみに存在)
ワーキングツリーを戻す。
git checkout <file>
#参考
より詳細に知るにはこちらを見ることおすすめ
[git reset (--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法