Gitでの操作を取り消す
Gitでの取り消し操作には目的によりいくつかの方法がある。
ローカルの変更取り消し
1 | $ git checkout . |
変更はこれで全部取り消すことができるが、新規追加したファイルに関しては削除されない為、完全に元に戻したい場合は別途削除する必要がある。
1 | $ git clean -df . |
addを取り消し
1 | $ git reset HEAD . |
addの状態しか取り消されない為、変更も取り消したい場合はローカルの変更取り消し作業も行う必要がある。
commitを取り消し
1 | $ git reset [<mode>] [<commit>] . |
modeのデフォルトは–mixedである為、変更したファイルはすべてそのままとなり、gitの履歴がだけが変わる。
変更したファイルも含めてすべて指定のcommit状態に戻したい場合は、modeに–hardを指定する。
また、–hardを指定した場合も新規追加のファイルは残ったままになっている為、完全に元に戻したい場合は別途削除する必要がある。
pushを取り消し
1 2 | $ git revert [<commit>] $ git push |
指定commitまでの変更を相殺するcommitを作成するというものなのでrevert後にpushすることでリモートが実質undoをしたような状態になる。
複数コミットを取り消したい場合は、-nオプションを指定する。
1 2 3 4 5 | $ git revert -n [<commit>] $ git revert -n [<commit>] ... $ git commit $ git push |
-nは–no-commitと同じオプションでその名の通り、自動でコミットをしないようにする。