【Git】巻き戻しに失敗して超焦った時

2014年9月8日

git

日々、バックアップのつもりで git add. git commit -m 'hogehoge' って打ち込んで、バージョン管理しているつもりなんだけど、仕事である時、何を思ったか、いらないと思って消してしまったフィアルを、とりあえずバックアップしようと思い、 「GITで巻き戻して、ファイル回収すればいいじゃん。」 と、浅はかに考えたところから、スタートします。 まず、何も考えずに、WEBで検索して、巻き戻しコマンドをやります。 1つ手前のHEADに戻すつもり reset --hard HEAD~1 ・・・あれ??なんか、WEBページの表示がおかしい・・・ そして、ファイル群がおかしいことにも気がつく、 どうやら、履歴の先頭に戻ったようだ・・・ガチョン!! さらに、幸いにも、commitのIDを調べていたので、それに戻してみようと試みる reset --hard "HEAD@{a6d1748039dd1347a2e44f1eb2fff7752acf0deb}" なんか、思った結果にならない・・・ そして、打ち込んだコマンドをそのまま巻き戻してくれるやり方を見つけ、事なきを得た。

やり方

$ git reflog -n 10 ※10履歴表示する // こんな感じで表示される a6d1748 HEAD@{0}: checkout: moving from admin to ver0.95 a6d1748 HEAD@{1}: HEAD@{8}: updating HEAD 01e09c4 HEAD@{2}: HEAD@{8}: updating HEAD a6d1748 HEAD@{3}: HEAD@{6}: updating HEAD 01e09c4 HEAD@{4}: HEAD@{4}: updating HEAD a6d1748 HEAD@{5}: HEAD@{4}: updating HEAD 74de6e7 HEAD@{6}: HEAD@{1}: updating HEAD 01e09c4 HEAD@{7}: HEAD@{1}: updating HEAD 74de6e7 HEAD@{8}: HEAD@{a6d1748039dd1347a2e44f1eb2fff7752acf0deb}: updating HEAD 01e09c4 HEAD@{9}: HEAD~1: updating HEAD

コマンドの巻き戻し

$ git reset --hard "HEAD@{7}" HEAD@{*}の*部分は、履歴が変わるたびに増加していくので、いつも同じとは限らず、reflogを見ながら戻す時に使うといいよ。 何故かずっと前に消したはずのファイルが再復活したりして、少しだけパニクったが、記憶をたよりに、いらんファイルを削除だけして、元通りにもどったっぽい。 いや〜、GIT、ありがたいけど、少しむずいな・・・ もっと本格的に勉強せねば・・・ バージョン管理って、保険っていうのはわかるが、イマイチ、機能毎に管理したり、修正項目ごとにどうやってgit管理して整理すればいいのか、未だにわからん・・・ でも、以前会社にいたgitプロがいうには、 「addしてcommitさえしておけば、戻せるしなんとでもなる」 という言葉だけ信じることにしよう。

参考

※ちなみに、助けてもらった(参考にさせてもらった)ページはココです。 Thanks!!!!!

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。