git revert でやらかした話


先日git revertでやらかしてしまったのでご紹介しておきます。
自分がアホだっただけかもしれませんが、
同じ失敗をする方がいませんように共有させていただきます・・・

何をやらかしたのか

結論から言うと、
知らない間に他の人のコミットを消してリリースしてしまった(ヒャー!!

なぜそんなことに

devブランチにmaserをmergeしてきたのをrevertしました
意図は正直覚えていないのですが(汗
mergeを一旦なかったことにしたかったのだと思います。

図にするとこんな感じ

*       fffffff Merge develpoment into master (master)
|\
| *     eeeeeee Revert 'ddddddd' (HEAD -> development)
| *     ddddddd Merge master into develpoment
|/|
* |     ccccccc 他の人の開発
| *     bbbbbbb developmentブランチを切ってcommit
|/  
*       aaaaaaa first commit (master)

その結果

masterにmergeしたら(当然ですが)取り消したcommitが取り込まれ、
master上でも他のコミットを打ち消してしまったが、
それに気づかずreleaseブランチまでmergeしてしまいました。

どうすればよかったのか

今回はただmergeする前に戻りたかっただけなので(多分)
"reset"で良かったなーと思います。
また、revertは「開発ブランチでは原則行わないように」という運用になりました。

まとめ

revertはcommitする前に戻してくれるコマンドではない!!
commitを打ち消すcommitで上書きしてるだけなんだ!!
ということを肝に銘じておきます。