фон проблемы
существуетWindowsПосле извлечения нового кода из ноутбука он выполняетсяpre-commit, возникает следующая ошибка:
Delete `␍`eslint(prettier/prettier)
Вот несколько решений, которые я лично пробовал:
решение
1. Ctrl+S, чтобы сохранить файл
согласно сCrtl+SСохраните текущий файл ошибки,eslintОшибка исчезает, ноGitВо временном хранилище больше записей об изменении файлов, сравнитеWorking treeРазницы не нашел.
Недостаток: нельзя сохранить все файлы один за другим, хлопотно иcommit, избыточный.
2. ворс пряжи --fix
Легче, чем выше,eslintОшибка исчезает, но в области временного хранения появляется больше n записей об изменении файлов, сравнитеWorking treeРазницы тоже не нашел.
Недостаток: нужноcommitВсе файлы избыточны.
Ссылка: «ошибка Удалить ⏎ красивее/красивее» в файлах .vue``
3. Настройте файл .Prettierrc
в корневом каталоге проекта.prettierrcможно записать в файл. В самом деле, не позволяйтеprettierОпределяет формат в конце каждой строки файла.
"endOfLine": "auto"
Недостатки: он не совместим с кросс-платформенной разработкой и не идеален с точки зрения фронтенд-инжиниринга.
Ссылка: Почему я продолжаю получать Удалить ‘cr’ [красивее/красивее]?
4. Переключение в один клик через IDE
Это метод, предоставляемый Nuggets в области комментариев. Как правило, строка состояния в нижней части IDE предоставляет инструмент для «переключения последовательности окончания строки». Как показано на рисунке выше, вы можете переключиться на правильный последовательность окончания строки одним щелчком мыши.
Недостатки: Восстановить можно только текущий файл, и проблема сообщения об ошибках всего проекта не решается.
5. Лучшее решение
Корень проблемы:
ВиновникgitСвойство конфигурации:core.autocrlf
По историческим причинам,windowsСяхэlinuxСимволы новой строки в текстовом файле ниже несовместимы.
* Windows在换行的时候,同时使用了回车符CR(carriage-return character)和换行符LF(linefeed character)
* 而Mac和Linux系统,仅仅使用了换行符LF
* 老版本的Mac系统使用的是回车符CR
| Windows | Linux/Mac | Old Mac(pre-OSX |
|---|---|---|
| CRLF | LF | CR |
| '\n\r' | '\n' | '\r' |
Поэтому проблемы несовместимости возникают, когда текстовые файлы создаются и используются в разных системах.
По умолчанию в моем репозитории проектаLinuxКод, представленный в среде, файл по умолчанию имеет видLFОкончательный (инженерные нужды, унифицированные стандарты).
когда я используюwindowsкомпьютерgit cloneкод, если мойautocrlf(существуетwindowsустановить подgit, который по умолчанию равенtrue)дляtrue, то каждая строка файла будет автоматически преобразована вCRLFВ конце, если вы не вносите никаких изменений в файл,pre-commitвоплощать в жизньeslintвам будет предложено удалитьCR.
теперь понятноctrl+sа такжеyarn run lint --fixПочему решение можно исправитьeslintнеправильно, потому чтоGitавтоматическиCRLFконвертировано вLF.
Лучшие практики:
СейчасVScode,Notepad++Редакторы могут автоматически распознавать символ новой строки в файле.LFещеCRLF. если вы используетеwindows, кодировка файлаUTF-8и содержит китайский язык, лучше всего использовать глобальныйautocrlfУстановить какfalse.
git config --global core.autocrlf false
Уведомление:gitПосле глобальной настройки нужно перетянуть код.
Суммировать
Я нашел много информации,stackoverflow,githubЕсть соответствующие обсуждения и решения этой проблемы, но ни одно из них не может задеть за душу. Я написал эту статью, чтобы иметь возможность прочитать ее в будущем.Если она будет полезна друзьям, попавшим в беду, автору она никогда не надоест!