gitでマージする前に、タグをつけておくとすぐに戻せて、大失敗が回避できる
今僕はstatic-perlという、Perl上で動く静的な型を持つVMを持った言語バーチャルマシンを作成しています。
オープンソースで開発していて、他の開発者の方からpull requestを受け取っているのだけれど、pull requestをマージする前に必ずやっていることがある。
マージする前にタグをつけておく
いまmasterブランチにいたとして「foo」という他の開発者が作ってくれたブランチをマージする。
git merge foo
でも、マージって、思ってもみないものだったりするときに、戻すのが結構めんどうなんだよね。「あー、戻すのどうすんだっけなぁ。失敗したなぁ。」
でも、そういう場合に備えて、**タグを先につけておくとすぐに戻せるよ**。
git tag 20170107
マージする前にタグをつけておく。するとマージに失敗しても、
git reset --hard 201701017
とすると、あら不思議、元通り!
追記「ORIG_HEADでも戻れるという情報をいただきました」
タグを使わなくても、git reset --hard ORIG_HEADでいいはずです。ORIG_HEADはgit mergeのときに作成されるシンボリック参照で、この記事で言っているタグと同様のコミットを指します。