gitで作業していてmasterで進めていたもののリリーススケジュールが変わったり、仕様の見直しなどで現在の作業履歴は残したまま過去のある位置にmasterを巻き戻したい事があります。
git revertを使って一つ一つ作業を消しても良いのですが、そうするとログは汚いし、見た目巻き戻った事になっていても後でマージし直したりする時にこれまた面倒な事に。そこで以下のような方法で巻き戻しを行います。
$ git checkout master $ git checkout -b dev_foobar $ git push origin dev_foobar $ git branch -D master $ git checkout 2ee2030a6367f18d9948e92767262f20d7bf60f6 $ git checkout -b master $ git push -f origin HEAD:master
まずmasterブランチの先頭にcheckoutし、作業中のブランチをdev_foobarとして保存します。
その後ローカルのmasterを削除し巻き戻したい場所にcheckout。
新規にmasterブランチを作成し、forceオプションを付けてoriginにpushします。
これでmasterを2ee2030a6367f18d9948e92767262f20d7bf60f6の位置まで巻き戻せました。
GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus) | |
大塚 弘記 技術評論社 2014-03-20 売り上げランキング : 1912 Amazonで詳しく見る by G-Tools |
Gitポケットリファレンス | |
岡本 隆史 武田 健太郎 相良 幸範 技術評論社 2012-07-10 売り上げランキング : 18940 Amazonで詳しく見る by G-Tools |