У меня есть CLI-скрипт с ff. наверху:
#!/usr/bin/env php
<?php
// ...
Однако скрипт работает после того, как я git commit снова запустил тот же скрипт, чтобы вернуть ff. ошибка:
/usr/bin/env: 'php\r': No such file or directory
Скрипт исправлен выполнением предложения здесь.
Мой вопрос заключается в том, как предотвратить возникновение этой проблемы в первую очередь?






Вероятно, есть конфигурация git, которая меняет формат EOL на CRLF вместо сохранения LF. Это целая тема. Короче говоря, если вы хотите, чтобы git не связывался с форматом файлов EOL, установите это в .gitattributes:
* -text
Этим вы говорите git, чтобы он не испортил формат EOL любого файла в проекте. Добавьте файл в проект, чтобы им могли поделиться все разработчики. Наконец, если коммит, который испортил файл, является последним, измените его (после настройки файла, чтобы иметь unix EOL и установить атрибут в .gitattributes):
dos2unix the-script.php
git add the-script.php
git commit --amend --no-edit
Да... оба... и они в беспорядке. Используйте атрибут, и тогда вы находитесь под контролем.
Выполнение
git config --listпоказывает этиcore.autocrlf=truecore.safecrlf=falseимеют ли они какое-либо отношение к этой проблеме?