33
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

すきなことをしよう(仮)Advent Calendar 2015

Day 25

gitで誤ってmasterへcommit・pushまでしてしまったときの対処

Last updated at Posted at 2015-12-24

「gitでミスってmasterにcommitした、さらにリモートまでpushしちゃった」なんてときの対処方法。resetも効かない、ブランチ戻す操作はしたくない場合に有効なものを実例と共に記載します。

よくある作業風景

git_1.png

よくあるmasterとdevelopだけのシンプルな構成。developで開発しています。

しまったやらかした

git_2.png
git commit

developにcommitしたかったのに、間違ってmasterブランチにcommitしてしまいました。あろうことかリモートにpushまでしてしまいました。さっさと直さないと非難轟々です。

対処 : 手順1

git_3.png
git revert C4

まずは慌てずにミスってcommitした内容をrevertしましょう。revertは「対象のコミットを打ち消すパッチ」を作るオプションです。
これで取り急ぎはmasterに間違って入ったcommit分がきえました。

対処 : 手順2

git_4.png
git checkout develop
git cherry-pick C4

次に本来commitするはずだったブランチ(今回はdevelop)に反映させましょう。developブランチで対象のcommitをcherry-pickしてください。

対処 : 手順3

git_6.png
git cherry-pick C4'
git revert

masterブランチでrevertした内容を取り込み、それを更にrevertして下さい。

やりがちなのがコレをしない場合。やらないと、最終的にmasterにdevelopをマージした際にC4'の内容が優先されてしまい、masterからC4が消えてしまいます。
ので、C4'を打ち消す内容をコミットしてやりましょう。

以上です。

git_7.png

これでmasterにdevelopをマージしてもめでたく作業内容のC4,C5,C6がまとめてC7としてmasterに反映されましたね。

画像はLearnGitBranchingで作ったものを少し加工して使わせていただきました。

33
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?