見出し画像

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とかに投稿したい

この記事が気に入ったらサポートをしてみませんか?