Gitでコミットをなかったことにしたい


Gitでmasterブランチで作業しています。  
下図の1〜3の順番にコミットをした後、2をチェックアウトして新しく「bugifx」ブランチを切って4をコミットしました。

さて、ここで **3の内容をなかったことにして** masterを1→2→4という状態にしたいのですが、どのようにすれば良いのでしょうか？

![Flow](https://i.stack.imgur.com/VuLna.png)




リモートへのプッシュはまだ行われていないとして・・・

下記で bugfix ブランチの位置に master ブランチを移動させられます。

[code]

    git branch -f master bugfix
    
[/code]

bugfix ブランチは 4 の位置にあると思いますので、master も 4 に移ります。

例えばこのようになります。

[code]

    $ git log --graph --decorate --oneline --all
    * 161f88b (HEAD, bugfix) 4
    | * d087a50 (master) 3
    |/
    * bde8c9a 2
    * e635ec8 1
    
    $ git branch -f master bugfix
    
    $ git log --graph --decorate --oneline --all
    * 161f88b (HEAD, master, bugfix) 4
    * bde8c9a 2
    * e635ec8 1
    
[/code]




リモートへのプッシュはまだ行われていないとして・・・

下記で bugfix ブランチの位置に master ブランチを移動させられます。

[code]

    git branch -f master bugfix
    
[/code]

bugfix ブランチは 4 の位置にあると思いますので、master も 4 に移ります。

例えばこのようになります。

[code]

    $ git log --graph --decorate --oneline --all
    * 161f88b (HEAD, bugfix) 4
    | * d087a50 (master) 3
    |/
    * bde8c9a 2
    * e635ec8 1
    
    $ git branch -f master bugfix
    
    $ git log --graph --decorate --oneline --all
    * 161f88b (HEAD, master, bugfix) 4
    * bde8c9a 2
    * e635ec8 1
    
[/code]

