Gitのリモートリポジトリに間違ってpushしてしまった時の対処法
最近、別のブランチを切るべきを変更を間違えてbranchを切らずにremoteのdevelop(master)にpushしてしまうということをやらかしました。「やべ!どうしよう!」と慌てないためにも、こういう時どうすれば備忘録がてら書いておこうと思います。
前提
developに間違って以下のコミット(8c28831)をpushしてしまい、本来作業するbranchでpushし直したい!
$ git log --oneline
8c28831 間違えてpushしたコミット
82697e5 commit2
05d2fd3 commit
手順
色々方法があると思いますが私はこうしてます。(もっとスマートな方法あったら教えて下さい。)
本来作業するはずだったbranchを間違えてpushしてしまったbranchから作成し、リモートへpush
$ git checkout -b feature/test # branchの作成&切り替え $ git push origin feature/test # リモートへpush
間違えてpushしてしまったcommitをresetして戻して強制push
git reset --hard {番号}
を使用するとその番号のコミットまで戻すことができます。
今回は8c28831
のコミットを取り消し、82697e5
の状態に戻したいので、以下のコマンド叩きます。
$ git reset --hard 82697e5
戻したらpushします。ただ普通にpushしようとすると怒られるので-f
をつけて強制pushします。
この-f
は強力なので先ほど切ったbranchにちゃんと8c28831
があることを確認することをオススメします。
$ git push -f origin develop
強制pushする方法の他にも remote branchを消して作りなおす という方法もありますが、それはちょっと怖いのでこの方法でやってます。
GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)
- 作者: 大塚弘記
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (21件) を見る