gitでなかったことにする方法

こんにちは、さるまりんです。

gitでなかったことにしたいってなりまして。。

よく使うのがこれ。

通常のgit revert

特定のコミットを元に戻す時にgit revertを使います。

で、単純に一つのコミットを元に戻す時はこうです。

git revert [コミットID]

これで[コミットID]の変更は元に戻ります。

マージコミットのgit revert

戻したいコミットがマージコミットの場合、上のやり方ではエラーとなってしまいます。

マージコミットってなにというと2つのブランチが独自の進化を遂げている状態でマージする際に作成されるコミットです。

そのマージコミットを元に戻すにはこんな風にコマンドを叩きます。

git revert -m 1 [コミットID]

あちゃーという時、こんな風にしてなかったことにしてきました。

今回はちょっと違います。いろいろ編集しててなんかよくわからなくなりまして、いっそのことローカルでやったことを捨てて、リモートと同期したいとな、と。

ローカルの変更を捨て、リモート同期

あるんですね〜、コマンド一発でできる方法が。

git fetch origin && git reset --hard origin/master && git clean -f -d

git fetch originでリモートの変更を取得して、git reset --hard origin/masterで強制的にリモートのmasterブランチと同期。で、git clean -f -dで追跡対象外のファイルとディレクトリを削除。

おお、すごい。なかったことになった〜。

このコマンドですが、GitHubにgitのTips集がありましてそこにしっかり”Sync with remote, overwrite local changes”と掲載されておりました。

僕、このTips集についてこれまで知りませんでした。ソースコードを誰かとシェアしてて、gitコマンド叩く時、「このコマンド間違ってないかな?壊したりしないよね。」と不安になったりします。ちゃんと勉強して自分がなにしているのか知っているとそんなことはなくなりますよね。

gitは日常的に使ってますし、GitHubにもお世話になっています。

いや〜、知らないこといっぱいで恥ずかしい。日々勉強ですね。ここに載っているTipsを今後勉強していきたいと思います。

読んでくださってありがとうございました。

ではまた!