git revertして修正して再commitする方法
今までgitでなにか複雑なことをしないといけないという場面に遭遇しなかったが、今日遭遇したのでメモ
git revertとは
まずgit revertとはについて説明する
このコマンドは、何をしてくれるのかというと特定のcommitの内容と逆の修正をcommitして実質巻き戻す
この逆向きのcommitというのがわかってなくてハマった
またmergeを巻き戻すときは巻き戻しのコミットをどのブランチにするのかが決められないので、オプションで親を指定してあげないといけない
mergeの巻き戻しの話は難しい話なので、各自調べてください
起こったこと
github flowで運用中で以下の状態からブランチCのを取り除く必要があった
ブランチAにブランチB、Cをマージ
developにブランチAをマージ
masterにdevelopをマージ
github flowに関してはこちら
https://qiita.com/tatane616/items/aec00cdc1b659761cf88
最初考えたこと
最初よく考えずに以下の手順で行けるでしょと考えた
1. masterからdevelopのマージをrevert
2. developからブランチAをrevert
3. ブランチAからブランチCをrevert
4. ブランチAをmasterまでマージ
実際やって見るとだめだった
ブランチAからブランチCを取り除いたブランチA'からdevelopにprを投げれなかった
逆向きのcommitが走ってるので過去の修正は時系列的に吐き捨てられてるので、revertのrevertを作って、時系列をもどして、そこから修正をrevertしてあげないといけなかった
本当にやらなければいけなかったこと
本当にやらなければ行けなかったのは以下だった
1. masterからdevelopのマージをrevert
2. masterからdevelopのrevertをrevert
3. masterからdevelopのrevertをrevertしたブランチからブランチAのマージをrevert
4. masterからdevelopのrevertをrevertしたブランチからブランチAのrevertをrevert
5.masterからdevelopのrevertをrevertしたブランチからブランチAのrevertをrevertしたブランチからブランチCをrevert
6. masterからdevelopのrevertをrevertしたブランチからブランチAのrevertをrevertしたブランチからブランチCをrevertをしたブランチをmasterまでマージ
書いててもよくわからない
もはや何をrevertしているのかわからない
実際やったこと
色々考えてブランチ壊すこと、面倒くささを考えて同じ修正を全部手動でし直してコミットした
俺は無力
まとめ
めんどくさいので、revertは諦めて手動で修正しましょう
時間ある時にちゃんと検証してzennとかに投稿したい
この記事が気に入ったらサポートをしてみませんか?