はじめに
今回は、私が実際の開発現場で経験した、誤ってリモートリポジトリにプッシュしてしまったコミットを git revert
で取り消す方法について、まとめました。初心者の方でも安心して使える手順を紹介しますので、参考にしてみてください。
git revertとは
git revert
は、Git(ソースコード管理ツール)のコマンドのひとつで、過去に行った特定の変更を取り消すためのものです。具体的には、「前にした変更をなかったことにしたい!」というときに使います。
実際の使用例
スクショのコミットメッセージ「console.logの削除」を誤ってリモートリポジトリにプッシュしたケースを想定して、取り消したい思います。
リバート対象のコミットを確認
ローカルのリポジトリで取り消したいコミットのIDを git log
で確認します。
% git log
commit コミットID (HEAD -> feature/revert-example, origin/feature/revert-example)
Author: author <author@example.com>
Date: Fri Aug 30 20:10:14 2024 +0900
console.logの削除
リバート
次に、リモートリポジトリにプッシュされたコミットを git revert
で取り消します。先ほどのコミットIDを使用してリバートを実行します。
% git revert コミットID
リバートコミットの編集
git revert
コマンドを実行すると、以下のようなコミットメッセージ編集画面が表示されます。
この画面では、リバートのメッセージが自動的に入力されます。たとえば、「Revert "console.logの削除"」 のように、元のコミットの内容を示すメッセージが含まれます。このメッセージをそのまま使用する場合は、特に変更せずにコミットボタンを押して終了します。必要に応じてメッセージを編集することも可能です。
コミットボタンを押すと、リバートコミットが作成され、ローカルリポジトリに反映されます。この操作によって、指定したコミットを取り消す新しいコミットが履歴に追加されます。
リモートリポジトリの反映
リバートコミットがローカルリポジトリに作成された後は、それをリモートリポジトリに反映させる必要があります。この手順を行うことで、他のチームメンバーもリバートされた状態を共有することができます。
コミットボタンを押した後に表示される変更の同期ボタンを押すことで、リモートリポジトリに変更が同期されます。これにより、リバートコミットがリモートリポジトリにも反映され、リモートリポジトリの状態がローカルリポジトリと一致します。
Githubで確認
GitHubで変更が正しく反映されているか確認できます。
上の画像のように、GitHubのコミット履歴を確認すると、リバートコミットが追加されていることが分かります。コミットメッセージとして「Revert "console.logの削除"」と表示されているため、指定したコミットがリバートされたことが確認できます。
ここで重要なのは、git revert
で取り消したいコミットの変更は元にできるが、履歴の「console.logの削除」を行なった履歴は残るということです。
さらに、リバートされたコミットに関連する変更が正しく反映されているか、ファイルの変更履歴を確認することも可能です。
この画面では、リバートコミットによって元に戻された変更が表示されています。リバートしたい変更が正しく取り消されているかどうかを、ここで確認してください。
おわりに
これまでは、誤ってプッシュしたら、リモートリポジトリのmainブランチを参照しながら、手動で該当箇所を直してましたが、コミット履歴を綺麗に保つうえで、便利なコマンドを知ることができました。