その他
    ホーム技術発信DoRubyGit 〜やらかしてしまった場合の戻し方〜

    Git 〜やらかしてしまった場合の戻し方〜

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    rickNo35です。
    最近Gitでやらかしてしまった時の戻し方を記載します

    環境

    git 1.7.1

    前提

    masterブランチ
    hogeブランチを保持

    状態

    hogeブランチにてmasterブランチをマージしたところ
    conflictが発生修正してcommitしたが、
    conflict発生以外のマージしたファイルもcommitしてしまった。
    (自分は編集していないのに他の人の修正が自分hogeブランでコミットされてしまう)
    別のブランチをマージしてしまった。
    などを行いなおかつ気付かずに開発を続けてしまった時など色々

    修正手順

    # hogeブランチ移動
    git checkout hoge
    # hogeの変更履歴表示(別ターミナルで表示)
    git log –stat master..hoge
    # masterブランチに切り替わり最新にする
    git checkout master
    git pull
    # 新しくブランチを作成+new/hogeに移動
    git checkout -b new/hoge
    # 別ターミナルで表示しているhoge変更履歴より必用なcommitのみ抜き出して入れる
    git cherry-pick 取り出したいlogのcommitの番号
    # hogeブランチを移動
    git branch -m hoge old/hoge
    # new/hogeブランチをhogeに置き換える
    git branch -m new/hoge hoge
    # hogeにpushする
    # forceを付けないとコミット順番おかしいと言われるが強制的にforceでpushする(自分以外がいじっている場合はやらないほうがいい)
    git push –force origin hoge
    # 問題なければold/hogeブランチを削除
    git branch -d old/hoge