かわばんが

エンジニアの雑記

ウェブアプリケーションエンジニア java/spring/awsとか

マージをrevertしたら差分が出なくなった

リリースするためmasterに開発した資材を取り込んだ。しかし過去にRevertした時の修正だけが取り込まれない。

developは確かに最新なのに、なんでやねん。

ってなったのでメモ。文章にしづらい。わかりづらい。

問題が起きるまでの手順

featureで開発したものをリモートにpush //1

developにマージするためプルリクエストを作成したが、誤ってマージ先をmasterに指定。 //2

気が付かずmasterにマージしてfeatureを削除。 //3

マージした時点で間違いに気が付きgithubの画面上でRevertボタンを押す。 //4

ローカルにてfeatureをdevelopにマージしリモートのdevelopにpush。 //5

リリース時にdevelopをmasterにマージ //6

起こった問題

//6を行うことで、//5で取り込んだ修正をmasterに取り込み本番環境へリリースするつもりだった。

しかしmasterには//4の修正は取り込まれなかった。

どうやって解消したか

ローカルのmasterで直接、revertを行った時の資材を修正しpushした。

その後、masterをdevelopにもマージ。

対応は適切だったのか

今回は修正対象のファイルが少なかったため、masterを直接修正することも可能だったが修正するファイルが増えれば増えるだけバグが入る可能性が高まる。 したがって適切ではなかったと思われる。

ではどうすべきだったのか。

結論としては//2をrevertである。 するとリモートのmasterに、revertする前の修正が反映されるので(間違えてマージした状態)ローカルでpullして最新の状態にしておけば問題なかったのではないかと思われる。

revertに対してRevertを行うということはなんとなくわかっていたのだが、どのコミットハッシュ値に対してrevertすればいいのかという部分がよくわからなかった。のでびびった。

ちなみに検証用のリポジトリーでやってみたのだが、githubの画面上でrevertボタンを押すとrevertのプルリクみたいなのが作成されるので、それをマージするという流れになる。 revertのマージプルリクエストのコミットがあるので、そのcommitをrevertすればよかったと思われる。

今回の学び

Revert後、再度マージしたい場合はRevertをRevertしないと差分が出ない。

参照にしたサイト。ありがとうございます。

https://chooringo.hatenablog.com/entry/2017/03/26/225718 https://blog.risouf.net/entry/23