git 巻き戻し

https://uehatsu.info/tech/archives/2015/03/rewind-the-master-on-git.html

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の位置まで巻き戻せました。

この記事が気に入ったらサポートをしてみませんか?