1. chichiritsuka

    No comment

    chichiritsuka
Changes in body
Source | HTML | Preview
@@ -1,46 +1,45 @@
「gitでミスってmasterにcommitした、さらにリモートまでpushしちゃった」なんてときの対処方法。resetも効かない、ブランチ戻す操作はしたくない場合に有効なものを実例と共に記載します。
## よくある作業風景
![git_1.png](https://qiita-image-store.s3.amazonaws.com/0/85138/12e71934-5c74-5ab8-1035-28578da5153e.png)
よくあるmasterとdevelopだけのシンプルな構成。developで開発しています。
## しまったやらかした
![git_2.png](https://qiita-image-store.s3.amazonaws.com/0/85138/6eb612b1-655d-bac0-33e7-5b55555ec80d.png)
`git commit`
developにcommitしたかったのに、間違ってmasterブランチにcommitしてしまいました。あろうことかリモートにpushまでしてしまいました。さっさと直さないと非難轟々です。
## 対処 : 手順1
![git_3.png](https://qiita-image-store.s3.amazonaws.com/0/85138/3899b87b-249b-22e8-ecb1-7551972290d8.png)
`git revert C4`
まずは慌てずにミスってcommitした内容をrevertしましょう。revertは「対象のコミットを打ち消すパッチ」を作るオプションです。
これで取り急ぎはmasterに間違って入ったcommit分がきえました。
## 対処 : 手順2
![git_4.png](https://qiita-image-store.s3.amazonaws.com/0/85138/e57ac061-3d29-42c8-a8e0-2b4d62bbf14f.png)
`git checkout develop`
`git cherry-pick C4`
次に本来commitするはずだったブランチ(今回はdevelop)に反映させましょう。developブランチで対象のcommitをcherry-pickしてください。
## 対処 : 手順3
![git_6.png](https://qiita-image-store.s3.amazonaws.com/0/85138/3445945b-d89b-521c-871e-00cacb59aae1.png)
`git cherry-pick C4'`
`git revert`
masterブランチでrevertした内容を取り込み、それを更にrevertして下さい。
-~~MTGで神ジェイスに対抗呪文打ってドヤ顔してたら対抗呪文返されたみたいなもんです~~
やりがちなのがコレをしない場合。やらないと、最終的にmasterにdevelopをマージした際にC4'の内容が優先されてしまい、masterからC4が消えてしまいます。
ので、C4'を打ち消す内容をコミットしてやりましょう。
## 以上です。
![git_7.png](https://qiita-image-store.s3.amazonaws.com/0/85138/7fb66fe3-3720-b425-8730-cb1238f6afc8.png)
これでmasterにdevelopをマージしてもめでたく作業内容のC4,C5,C6がまとめてC7としてmasterに反映されましたね。
画像は[LearnGitBranching](http://k.swd.cc/learnGitBranching-ja/)で作ったものを少し加工して使わせていただきました。