共有ブランチで操作せずにマージ済みのコミットを取り消したい

・マージ済みのブランチを一旦戻したい
・マージを取り消すだけで、後々にまた(ほぼ)同じ内容をマージする
・同じブランチ名を使いたい
・共有ブランチは基本、マージ&プッシュのみしかしてはいけないと教わった
・git revertを何回も繰り返す可能性がある(revert revert みたいになるとややこしくなる)

上記のような状況になった時、自分なりに対応したことを綴ります。
間違っているところがあるかもしれません。

使うのはgit revertとgit cherry-pickです。

  1. 変更のあるブランチで戻したいコミットをrevertする
  2. masterブランチで1でrevert済みのブランチをマージする (ここで戻る)
  3. 新しくブランチを切る
  4. revertしたブランチと同じ内容を残しておきたいので、cherry-pickでコミットする
  5. 同じブランチ名を使いたいなら、元のブランチを削除する(ローカル、リモート)
  6. 新しく作ったブランチを元のブランチ名にする