この記事はアピリッツの技術ブログ「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