概要
間違って違ったブランチでプッシュしてしまったものを取り消したい。
ブランチがmaster、topic1があります。
topic2として切り分けてプッシュしたかったものを誤ってtopic1にプッシュしてしまった。やっちまった。修正したい。
手順
まずは、topic2を作成してそこに移ってみる。
$ git checkout -b topic2
gitのログを確認してみる。もちろんtopic1もtopic2も同じcommitのやつだね。topic2は****01
のままにして、topic1は****00
までに戻していきたい。
$ git log --oneline
****01 (HEAD -> topic1, topic2)
****00
...
topic1に移動する。
$ git checkout topic1
Switched to branch 'topic1'
コミット記録を****00
まで戻す。
$ git reset --hard ****00
ブランチtopic1でのログを確認すると、****00
まで戻っている。よし、とりあえずローカルの状態はOK。
でもプッシュしてしまったリポジトリをなんとかせねば。
$ git log --oneline
****00 (HEAD -> topic1)
...
削除した差分をforceプッシュする。
$ git push -f origin topic1
gitリポジトリを確認してみる。おお。戻っている。助かりました。これでtopic2でまた開発を再開できる。