LoginSignup
535
486

More than 5 years have passed since last update.

gitでいろいろ取り消したい

Last updated at Posted at 2016-09-03

ローカルの変更取り消し

$ git checkout .

変更はこれで全部ないことにしてくれるが、
新規追加したファイルに関しては削除されないので
完全に元に戻したいのなら別途削除する必要がある

$ git clean -df .

addを取り消し

$ git reset HEAD .

これだけだとaddの状態しか取り消されないので、
変更も取り消したいのであれば、
ローカルの変更取り消し作業も行う必要がある

commitを取り消し

$ git reset [<mode>] [<commit>] .

modeのデフォルトは--mixedであるため
変更したファイルはすべてそのままでgitの履歴が変わるだけ。

変更したファイルも含めてすべて指定のcommit状態に
戻したいのであれば、modeに--hardを指定する

また、こちらも--hardを指定したとしても新規追加のファイルは
残ったままになっているので、
完全に元に戻したいのであれば別途削除する必要がある

pushを取り消し

$ git revert [<commit>]
$ git push

こちらはどちらかというとundoするという感じではなく
指定commitまでの変更を相殺するcommitを作成するというもの

なのでrevert後にpushすることで
リモートが実質undoをしたような状態になる

ちなみに...

複数コミットを取り消したい時は
-nオプションを指定することでできる

$ git revert -n [<commit>]
$ git revert -n [<commit>]
...
$ git commit
$ git push

-nは--no-commitと同じオプションで
その名の通り、自動でコミットをしないようにする

535
486
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
535
486