未熟学生エンジニアブログ

プログラミング・Web開発をする大学院生のブログ

Qiitaの記事通りgit reset —hard して泣いた話

教訓

 

  • Gitのcommitを取り消したいときは、$ git reset —soft HEAD^ を使う。

  • むやみに$ rm -rf .gitは しない。

 

本題

Qiitaの記事で、

$ git commit を取り消したいときは、

$ git reset —hard HEAD^

すればいいよと書いてあったので、いいねも300件超えてたし、なんの気なしに実行した。

(ここで実は、前のcommitで追加した全てのファイルが消えていた・・・)

そして、フォルダ名を変更して(ここでファイル名を変更したのであれば、ファイルが消えたことに気づけていた…悪い偶然は重なるものです)

$ git add

$ git commit “改めてcommit”

すると、

nothing to commit

という文字が。なぜ?と思ったが、ここで自分は何が起きているか気づかずに「gitの不具合?」と思い、

$ rm -rf .git

をして、一からgit initし直せば直ると思って実行してしまった。

その結果、全てのファイルが完全に消えてしまった…(gitの記録が消えたので)

 

少ないファイル数だったが、戻すのに1時間かかった。

 

今度からは$ git reset —softを使おう。

 

そう強く心に決めると同時に、あのQiita記事を恨むのであった…

初心者は説明も読まず雰囲気でコピペを実行してしまうこともあるはず。おそらく他にも犠牲になった人がいるだろう…QiitaにBadボタンが追加されていれば、犠牲者たちは確実に押しただろう。(あまりいいことではないが)

Bad評価があれば、もう少し注意深く読むようになるのではないか。Qiitaの開発チームの方には、実装を強く願います。

 

でも—hardは注意が必要ということで、いい勉強になりました。

 

P.S. そもそも--hardがいる場面って結構少ないのでは、と思いました