gitであれこれ戻したい
gitで何かを戻したい時、いつもどのコマンド叩くか忘れるのでメモ
ワーキングツリーを元に戻す
ファイル編集したけどまだaddしてない時
$ git checkout . $ git checkout -- . $ git checkout HEAD -- .
どれもHEADの状態にワーキングツリーを戻してくれる。(結果が同じなだけで挙動は違うんだろうけど・・・)
"--"が謎なんだけど、helpを見みるとこんな例があった。
If you have an unfortunate branch that is named hello.c, this step would be confused as an
instruction to switch to that branch. You should instead write:$ git checkout -- hello.c
なるほど、ファイルと同名のブランチがあるとブランチ移動しちゃうから、--つければfile_pathとして解釈してくれるってことね。
indexを元に戻す
addしちゃったやつを戻す時
- ワーキングツリーの変更はそのままでaddだけを戻すなら
$ git reset HEAD
- ワーキングツリーの変更も含めてなかったことにするなら
$ git reset --hard HEAD
commitを元に戻す
commitしたけどやっぱやり戻したい時
- commitだけを戻してaddした状態にするなら
$ git reset --soft HEAD~
- commitとindexを戻してワーキングツリーを編集した状態にするなら
$ git reset HEAD~ $ git reset --mixed HEAD~
- commitもindexもワーキングツリーも戻すなら
$ git reset --hard HEAD~
リモートにpushされてるコミットを元に戻す
pushしたんだけど、やっぱみすってたから戻したい!って時
- 戻したいコミットのSHA-1を調べて
- エディタが立ち上がるのでrevert commitのメッセージを入力する
$ git revert [SHA-1] $ git push origin [branch]