マージを元に戻す
今日やらかしたので書きます。
1.経緯
お昼過ぎに、ユーザーからバグの報告が上がってくる。
自分は、別機能の開発をしていたのでチームメンバーにバグ対応を依頼。チームメンバーがバグを対応してくれて、僕宛にマージリクエストを投げる。 ←ここまで普通。
僕、自分の作業内容をそのままマスタブランチにマージ ← ???????
僕、本番環境でgit pull ← ?????????????
2.対応
とりあえず、急遽本番環境をマージ前にチェックアウト。(この時にも、戻りすぎて5分ぐらいサービスが落ちたりしていた・・・)
暫定的にはこれでいいが、間違えたマージをどう直すかということを考えることに。
マージ自体をなかったことには出来ないので、このマージによって発生した変更分を打ち消すようなファイルの編集を行う必要がある
(例えば、あるコードを変更したなら、それをマージ前の状態に戻す。ファイルを作ったなら、そのファイルを消す など)
まぁ、答えだけいうと、以下のコマンドを打つだけです。
git revert -m 1 {打ち消したいマージのハッシュ}
このコマンドを打つと、指定したマージを打ち消すようにファイルが作成/削除されたり、編集されます。
で、この状態で新しく[mearge_revert]みたいな名前のブランチを切って、プッシュすると、マージを打ち消すような作業をし終えたブランチが出来ます。
あとは、こいつのマージリクエストを投げて終わりです。