>> Собственно вопрос вот в чем, как все-таки правильно поступать в таких случаях....
Независимо от того, какой у тебя случай возникает, ты никогда не сможешь поступить правильно, если не сделал перед этим git status. То есть в твоем случае скорее всего получилось следующее: после очередной операции у тебя гит-проект был измененным, то есть git status наверняка показывал изменения (вероятней всего как раз этой твоей .eslintcache). В таком случае попытка переключения как раз и обламывалась.
Почему слетели css файлы? Они явно были в состоянии измененном или в текущем подготовленном коммите, который так и не удалось сохранить через git commit (то есть git add . сделал, а git commit нет (или не смог)). В таком случае git reset --hard удалит и эти файлы.
>> в .gitignor я его добавил, но как его подуспокоить локально не понимаю.
Если ты добавил .gitignor, то это не успокоит, потому что надо .gitignore:)
Но даже если ты добавил .gitignore и даже правильно прописал игнор, это не поможет, если папка или файл уже отслеживаются. Надо вычистить из кеша гита.
git rm --cached (если папка, то еще и флаг -r надо добавить и очень важно: путь не должен завершаться на слеш / ).
В общем, с гитом, даже не надейся, что уже скоро будет все точно понятно и не будет ошибок :) Так что всегда будь внимателен и обдумывай каждый шаг. Даже я, уже не первый год с ним работаю, иногда делаю ошибки. Пару месяцев назад вот тоже снес кучу изменений незакоммиченных. А git stash от тебя вот узнал :) (Всегда просто делал git checkout -b newBranch просто на горячую, все изменения уходили в новую ветку и там коммитились, а прошлая ветка забывала про это). А еще ведь есть черепик, ребейз и прочее мракобесие :)