経緯
VSCode上で開発をしていて
npm run dev
の実行結果がターミナルに残っていたので十字キー上を押して再度起動しようとコマンドを見ずにエンターしたら、
git clean -df
が実行されて未追跡のファイルが全部吹き飛んだ。
原因
VSCodeのターミナルに指定したgit bashは終了時に.historyを保存しないため、ターミナルを再起動したときのhistoryはピュアなgit bashの終了時のものになる。
今回はsource treeのGUI上で不要な未追跡ファイル(間違った場所に生成してしまったnode_modulesなどなど)をまとめて消すのが手間だったためCUI上で作業していたコマンドが残っていたせいでこんなことになった。
再発防止対策
VSCode側のhistoryが保存されないのが問題なら保存されるようにしてしまえばいい。以下がとても参考になりました。
https://qiita.com/misohagi/items/3ab0abc3bce2c11719c8
残った救い
VSCodeはファイルシステムに存在しないファイルがタブに存在する場合にファイルが見つからないエラーを表示するが、ファイルが消える際にそのタブがアクティブになっていればメモリ上には残っているので、そのまま保存すれば復元できる。GET KOTONAKI。