Я збираюся викинути це рішення туди. 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цього часу
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. Це просто так, як файли видаляються, ймовірно, найкраще їх створити. вгору