git commitでコミットエラーが起きて、 変更ファイルがどっか行って超焦りました。
どんなエラーだったか、どうやって解消したかを書いておきます!
コンソール見たらこんな感じのエラーだった
error Delete `..` prettier/prettier
はて。。??
結論ファイル復元できたし、コミット成功まで行ったよ
結論から言うと、コミット失敗したファイルは自動的に退避してくれていたので、以下を参考に復元することができました。
git stash list
git stash apply [復元したい内容が含まれているインデックス番号]
2日くらいかかった修正なので、戻ってよかったです。。
じゃあ、なぜコミット失敗したの?
では、なぜコミット失敗したのかですが、git commitを契機にeslintによるソースコードの静的チェックとPrettierによるコードフォーマットチェックが行われ、変更ファイル内にエラーが存在したためです。
昨日までの僕にはこの説明では何のこっちゃ分かりません。
↓eslintって何ですのん?
↓Prettierって何ですのん?
git commitでeslintやPrettierを実行できる機能があるの?と昨日までの僕は勘違いしていました。
git commit実行時にeslintやPrettierを実行するためには、huskyとlint-stagedというツールを使って実現しています。(また訳のわからない・・)
↓huskyとlint-stagedって何ですのん?
つまり、 処理順番をまとまると、以下の感じですかね。
- git commit時に発生するGitフック「pre-commit」をhuskyでハンドリング
- huskyの設定で「pre-commit」時の処理をlint-stagedに設定しておく
- lint-stagedによってGitステージング上のファイルを対象にeslintやPrettierを実行
僕の書いたソースコードは③でPrettierによるフォーマットチェックでエラーになっていた訳ですね。
じゃあどうやってコミット成功まで行ったの?
愚直にいくと、エラーを全て自力で解消するということになるのですが、そこはコマンドが用意されていました。助かった!
yarn run lint –-fix
--fixオプションをつけることで、フォーマットの自動補正してくれるようです。ここら辺参考にしました。