Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
31
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@chichiritsuka

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

「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で作ったものを少し加工して使わせていただきました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
31
Help us understand the problem. What are the problem?