日々、バックアップのつもりで
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!!!!!
0 件のコメント:
コメントを投稿