类似 this user 我跑步有问题 sed 当一些被跟踪的文件是二进制文件时,覆盖存储库中的所有文件。
sed
两者都没有 git ls-files 也没有来自这个问题的一些git grep解决方案,比如 git grep --full-name -l '.' 忽略二进制文件,将其传递给sed
git ls-files
git grep --full-name -l '.'
git ls-files | xargs sed -i '' 's/here/there/g'
导致错误“sed:RE错误:非法字节序列”。
我如何在所有可以运行sed的文件上运行sed,而忽略二进制文件?
更换 git ls-files 具有 git grep -lI . 事实上,如果你用它可能会更好 git grep -lI 'here' | ... 所以你只跑 sed 对于包含与sed命令中使用的正则表达式匹配的字符串的文件,即:
git grep -lI .
git grep -lI 'here' | ...
git grep -lI 'here' | xargs sed -i '' 's/here/there/g'
-I Donât match the pattern in binary files.