ゆるふわ技術日誌

ゆるくふわっと広く浅く。

ExpressをやったもののGitの操作をミスって全喪失した #13

今日やったこと

Expressでjson web token

json web tokenと言うものがあるらしく、イケた認証方法みたいなのでやってみました。

qiita.com

こちらを参考に写経しつつ、分からないメソッドを調べつつ進めました。

Expressのお勉強にもなってとても良かったです。

サンプルコードを置こうと思ってたんですが…

Gitの操作ミスにより全ソース喪失

やっちゃいました。

写経とはいえ、理解するためにコメント入れたりしてたので、Githubにあげておこうとgit initしてgit add .してgit commit -m "initialize commit"ッターンって感じでやってたんですが…おわかりかと思いますが、.gitignoreを書かずにやってしまったため、node_modules下が全部Git管理下へ…(´・ω・`)

ここから僕が全データを喪失するまでの物語をどうぞ。


「知ってます!git revertすればコミットをなかったことにできるんですよね!!」

git revert HEADッターン

違うんですよね、git revertは「逆のコミットを作って打ち消す」んですね。

どうなったかというと、見事に全ファイルが作業ディレクトリから消去されたと。

やってしまったううたろ少年ですが、node_modulesを含んだコミットはあるのでそこに戻れば済む話ですね。よかった。

git reset --hard xxxxxx

無事にファイルが帰ってきました。よかったですね。

gitの管理から外す為にはgit rm node_modulesでしたね。実行しました。

無事にnode_modulesは管理下から外されました。

あとは、.gitignoreを追加して、コミットし直せばOKってわけですね。

コミットしました。

detached HEAD

なんか出てます。

もうわからん…。もう一回別のコミットに移動するか?

で、ゴニョゴニョやってるウチに操作ミスしてrevertのコミットに戻っていたようで、それでもdetached HEADは消えないし…。

とりあえず.git消して作り直すか…と思ってrm -rf .gitをやりました。

……おわかりですね。作業ディレクトリに何もない状態で.gitを削除してしまったので、見事に今日の午前中の作業を全喪失しました。おめでとうございます。

どうすればよかったのか

というわけで今日の記事には成果物なしです。

反省タイムを。

先日買ったわかばちゃんと学ぶGit使い方入門に全て書いてました…。

仕組みはどうあれ、detached HEADになったらブランチを作ってやればいいみたいです。

あとは必要に応じてマージしてやればいいってことですかね。多分。

ほんとGit力が足りなくて泣けてきますね。

detached HEAD状態に関しては以下を…。

qiita.com

雑談

午前中の成果が全て吹き飛びました。

他人が絡んでいるプロジェクトとかでやらかさなくてよかったと思います。

(と思ったけど他人が絡んでるプロジェクトだったら消えるのはローカルだけだから……まぁ.git消してその場しのぎしようとした罰が当たりましたかね…)