こんばんは、Webプログラマの篠田です。
今年は4年に1度の閏年で1日お得だなぁと思っていたのが気がつけばもう1年の6分の1が過ぎようとしています。
こんなことを考えるようになると、おっさんだなぁと思いますが「まだまだ若いものには負けん!」という意気込みで日々プログラムと格闘してます。
さて、ALAKI株式会社の制作現場では「Git」が大活躍していますが、過去にプッシュした内容をなかったコトにしたいという場合が稀にあります。
今日はそんな「過去の(Git内での)過ちをなかったことにしたい!!」という熱烈な願望を叶えるお話です。
この記事の目次
はじめに
今回のお話はあくまで「既にリモートサーバーにプッシュした内容をなかったことにしたい」というどうしようもない状況でお困りの方を対象としています。
もし、まだローカルサーバー内でのコミット止まりの方への解決方法は別の機会にご紹介したいと思います。
もっと具体的に言うと、間違ってプッシュしてしまった内容のせいで、その後のマージやらコミットやらができなくなってしまって右往左往している方こそ読んでみてください。
消したい過去を消す方法
まずは、消したいコミットを確認します。そこで使うのが「gitコマンド」の「log」です
1 |
$ git log |
このコマンドでコミットされた詳細を見ていきます
これによって消したいコミットIDが分かります。
コミットIDは下記の赤枠で囲んだ部分になります。
これが消したい過去そのものですので「gitコマンド」を使って消し去ってしまいましょう。
コミットを消す「gitコマンド」は「revert」とになります。
1 |
$ git revert [消したいコミットID] |
これで、[消したいコミットID]を取り消す新しいファイルが表示されているので、それをリモートサーバーに対してコミット&プッシュしてください。
それで問題のコミットはなかったことになっています。そう、データ的にね。
まとめ
プッシュしたコミットを消したいということで調べると大体「ブランチを消してやり直してね てへぺろ(・ω<)」という記事がありますが、開発が進んでしまっているプログジェクトでブランチの作り直しはリスクが高い行為です。
ですが、「gitコマンド」の「revert」を使うことでGitの歴史から完全に消し去ることはできませんが、「今のコミット無し!!」と言い張ることはできます。
まずいデータがリモートサーバーにプッシュされたからといって思い切ったことをせず、まずは自分の過ちをGitに刻みこむところからはじめてはいかがでしょうか?