Я собираюсь выбросить это решение там. Git сделает это. Смотрите этот пост об этом
Так что теоретически вы можете сделать это, чтобы преобразовать все дерево
cd root/of/tree
git init .
git add .
git commit -m "initial commit"
echo "* text eol=crlf" > .gitattributes
git rm --cached -r .
git reset --hard
Измените crlf
на lf
если вы хотите пойти другим путем. ПРИМЕЧАНИЕ: вы еще не закончили, продолжайте читать
Введите git status
чтобы увидеть, какие файлы будут затронуты. Возможно, вам придется добавить такие строки, как
*.jpg binary
*.png binary
*.gif binary
и т.д. в .gitattributes
чтобы избежать конвертации определенных файлов. Вы также можете явно пометить определенные файлы как текст
*.md text
*.css text
Затем просто повторите эти 2 строки после того, как вы отредактировали .gitattributes
git rm --cached -r .
git reset --hard
Затем снова используйте git status
чтобы увидеть, какие файлы будут изменены. Когда вы уверены, что все файлы, на которые вы хотите повлиять, перечислены в git status
то commit
git add .
git commit -m "normalize line endings"
Теперь проверьте все файлы еще раз
git rm --cached -r .
git reset --hard
Теперь они должны иметь желаемое окончание строки
** ПРИМЕЧАНИЕ. Если вы уже использовали git, пропустите первые 3 команды git. Если вы не использовали git, теперь вы можете удалить файл .gitattributes
и папку .git
.
** Создайте резервные копии ваших файлов: git rm --cached -r
удалит их все (хотя они теоретически находятся в вашем git repo (папка .git), как они восстанавливаются последней командой git reset --hard
. Просто, поскольку файлы удаляются, вероятно, лучше всего их резервировать.