Git

【Git】ローカルの修正を前回のcommitまで戻す方法

More than 1 year has passed since last update.


やりたいこと(想定シーン)

修正して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を使いこなす方法