І без будь-яких додаткових інструментів (як-от "fromdos", "dos2unix" тощо):
git filter-branch --force --tree-filter 'git ls-files | xargs file | sed -n -e "/.*: .*text.*/s/\(.*\): .*/\1/p" | xargs -0 sed -i"" -e "s/"$(printf "\015")"$//"' --tag-name-filter cat -- --all
Crossplatform (OS X, FreeBSD, Linux) корисний аналог 'fromdos', 'dos2unix':
sed -i'' -e 's/'"$(printf '\015')"'$//'
Можливо, корисний 'unix2dos':
sed -i '' -e 's|$|'"`printf '\015'`"'|' file.name
Якщо ви абсолютно не знаєте, що ви робите, ви можете використовувати цю просту вбудовану команду для видалення "/ r" з усіх файлів у поточному каталозі ".":
find . -type f -exec sed -i'' -e 's/'"$(printf '\015')"'$//' {} \;
git filter-branch --tree-filter 'git ls-files -z | xargs -0 dos2unix' -- --all
. Прапори-z
і-0
повідомлятиgit ls-files
таxargs
друкувати та інтерпретуватиnull
як кінець рядка.