QA@IT
«質問へ戻る

質問を投稿

git rebase masterしたらmasterのコードに問題があったため、少し戻したい

前置き非常に長いですがお願いします。

ブランチはこんな感じになっており、リモートのmasterとローカルのmasterが一致するとします。
master
br1
remotes/origin/master

また、リモートのmasterブランチは完全に参照用で私が変更を加えることは一切ありません。
従ってローカルのmasterはリモートからpullするだけとなります。

あるタイミングでbr1ブランチをつくり、そちらで開発を行っていました。
その後リモートのmasterにいくつかのコミットが入ったため、まずローカルのmasterにpullしました。
$ git checkout master
$ git pull

その後br1をチェックアウトし、masterにrebaseしました。
$ git checkout br1
$ git rebase master

通常であればこれで問題ないと思うのですが、masterの最後のコミットに問題があり
br1での開発が正常通り続けられないということになってしまいました。

このままでは困るので、remoteのマスターが正常に戻るまで何かしらの方法で回避し、
remoteが修正された段階で再度 $ git rebase master することで開発を続けるというふうにしたいのです。

ここまで前置き非常に長かったですが、
質問はこう言った場合の回避策はあるでしょうか、というものです。

理想的にはmasterのHEADまでrebaseしてしまったものを、一つだけ戻すというふうにしたいです。

・rebase前
        b1-b2-b3
       /
m1-m2-m3-m4-m5-m6

・rebase後
                  b1-b2-b3  
                 /
m1-m2-m3-m4-m5-m6

・m6に問題があったのでこのように変更したい
               b1-b2-b3  
              /
m1-m2-m3-m4-m5-m6
前置き非常に長いですがお願いします。

ブランチはこんな感じになっており、リモートのmasterとローカルのmasterが一致するとします。
master
br1
remotes/origin/master

また、リモートのmasterブランチは完全に参照用で私が変更を加えることは一切ありません。
従ってローカルのmasterはリモートからpullするだけとなります。

あるタイミングでbr1ブランチをつくり、そちらで開発を行っていました。
その後リモートのmasterにいくつかのコミットが入ったため、まずローカルのmasterにpullしました。
`$ git checkout master`
`$ git pull`

その後br1をチェックアウトし、masterにrebaseしました。
`$ git checkout br1`
`$ git rebase master`

通常であればこれで問題ないと思うのですが、masterの最後のコミットに問題があり
br1での開発が正常通り続けられないということになってしまいました。

このままでは困るので、remoteのマスターが正常に戻るまで何かしらの方法で回避し、
remoteが修正された段階で再度 $ git rebase master することで開発を続けるというふうにしたいのです。

ここまで前置き非常に長かったですが、
質問はこう言った場合の回避策はあるでしょうか、というものです。

理想的にはmasterのHEADまでrebaseしてしまったものを、一つだけ戻すというふうにしたいです。

```
・rebase前
        b1-b2-b3
       /
m1-m2-m3-m4-m5-m6

・rebase後
                  b1-b2-b3  
                 /
m1-m2-m3-m4-m5-m6

・m6に問題があったのでこのように変更したい
               b1-b2-b3  
              /
m1-m2-m3-m4-m5-m6
```