はじめに
ここ最近、仕事でケアレスミスが多い・・
そこで、やってしまったあとのバージョン管理の取り消し方法をまとめてみた。
事前準備
git log
下記のようにログが表示されるので、取り消したいコミット記録のひとつ前のコミットIDを使う。
(例)
commit ( hash_param ) ←これを無かったことにしたいときは
Author:
Date:
test commit
commit ( hash_param2 ) ←このIDを使う
Author:
Date:
test commit
コミット後にミスに気づいた
git add まで戻したい時
git reset --mixed ( hash_param2 )
ローカルの変更は残したい時
git reset --soft ( hash_param2 )
ローカルの変更も廃棄したい時
git reset --hard ( hash_param2 )
プッシュ後にミスに気づいた
※resetコマンドのオプションは任意で
git reset ( hash_param2 )
上記コマンドの時点では、ローカルブランチの変更がもどっただけ。
その状態で、強制的にプッシュすることでリモートブランチもコミット履歴含め戻すことができる。
(ただし、コマンドを打ち込んだ日付になるので注意)
git push -f origin main
(おまけ)コミット履歴を残したい時はrevertを使う
resetと違い、取り消したいコミットログそのものを対象にする。
(例)
commit ( hash_param ) ←これを無かったことにしたいなら、このIDを使う
Author:
Date:
test commit
git revert ( hash_param )
これで、コミットを打ち消したというログが残る。
リモートに適用したい場合はpushする。
git push origin main
参考
https://zenn.dev/nekoniki/articles/f238efa56eb869
https://wataru55120.hatenablog.jp/entry/2023/09/26/113827
https://nanayaku.com/git-delete-reset/