developに誤pushしちまった!git revertでリカバリー!!
公開: 2025年11月29日
ぎゃぁぁぁぁってことを、今月は2回やらかしました。
自分が今作業しているブランチがdevelopではなく、作業用ブランチを切っているものと思い込んでいて、そのままpushしてしまって😭
通常PR作ってpushしても何も起きないのに、developにコミット追加されるとslackに通知がくるんですよね。
ただpushしただけなのに「ピコーン!!!」通知きて、誰やと思ったら私やん!!!!
やっちゃった!!うわここdevelopやん!!ぎゃぁぁぁぁ!!!!!!ミスったぁぁぁ!!!!ごめんなさいぃぃ!!!!
どうリカバリーしたか紹介してみます。
QAの対応の時でした。この時は原因調査さえしてしまえば作業自体は少なかったんです。
差分1行で条件分岐を追加したのみ、かつスクショ動画で共有してOKもらってたので、「差分これだけなのでもうこのままでいいですか?」って聞いたら「いいっすよ!!!マージっしちゃいましょう!」でした(神)。
通知きたから私が直pushしてることもバレててw
即突っ込まれましたね。
なので、CI落ちないことだけ見つつ何もしなかったのですが。
昨日はCIのパフォーマンス改善で、CIの速度を見ていたのでそのままというわけにはいかない差分でした。(案の定落ちたし)
またpushした瞬間slack通知が来てやってしまったぁぁぁ!!!!!って絶望しましたw
そしてこれはそのままにしててはいけないパターンと思ったので、即通知のスレッドに「間違えました」と書いてリカバリー作業に入りました!
(この顔文字、超お気に入りです☺️)
意図してやったわけでないことをみてわかるようにw
特定のコミットを打ち消す新しいコミットを作成するgitコマンドです。
A → Bという差分があったとして、そのコミットハッシュを確認したら
git revert <hash>とするとB → Aのコミットの作成をすることができます。
時間が経つとコンフリのリスクがありますが、私は修正も小さく明解で即リカバリーに入ったのでコンフリすることはありませんでした。
ポイント
時間が経つとコンフリクトが起きる可能性がある
誤 push に気づいて即リカバリーに入ったので問題なし
差分も明確だったので安全に戻せた
私は差分の内容、誤push先が本番環境ではないこと、誤pushから3分程度しか経過していないことから誰かがこの差分をローカル環境に反映している可能性は極めて低いことから問題ないと判断してrevert commitもdevelopに直接pushしました。(非推奨)
本来はこのrevert作業もPRベースで戻すべきです。
// developで作業する(非推奨)
git checkout develop
// リモートリポジトリの内容を反映
git pull origin develop
// 特定のコミットの内容を打ち消すコミット作成
// 場合によってはコンフリする
git revert <hash>
// 打ち消す内容をコミットをpush
git push origin developこんな流れです!!!
// (推奨) 作業ブランチを切る
git checkout -b revert/develop-fix
git pull origin develop
git revert <hash>
// PRとして提出(推奨)
git push origin revert/develop-fixターミナルでも確認できますが、githubでコピーできるボタンがあるので、そこでやるのが安全でわかりやすいと思います。
ここの右下のところにハッシュいます!!
ミスってdevelopにpushしたことと、revertしたことだけ報告しました!
「報告ありがとうございますw全然大丈夫です」とのことでした!
見ての通り私は基本的にポンコツです。
人間ミスるのは仕方ないことなので、ミスった時になるべく早くミスを認識してどうリカバリーするかが大事だと思います。
バグあるものを作るのも仕方ないけど、バグに気づいたら即修正しきる技術力の方が重宝されるって言われたこともあったような。
今回の内容はそんな難しいことではないのですが現場っぽい内容かなと思ったのと、私のやらかしエピソードも共有しておこうと思って書いてみました!
現場入りたての方の参考になれば嬉しいです!!!
