这发生在我身上的数以千计的文件。所以我写了一个快速的bash脚本让dos2unix
为我解决。 Linux或Mac上的其他人可能会发现它很有用。
#!/usr/bin/env bash
_unwindows() {
local errmsg;
local filepath;
# base case
errmsg="$(git add . 2>&1)";
if [ $? -eq 0 ]; then
echo "Successfully converted CRLF to LF in all files.";
echo "Successfully ran `git add .`.";
echo "Done.";
return 0;
fi;
filepath="${errmsg#*fatal: CRLF would be replaced by LF in }";
filepath="${filepath%.*}";
if [ "${filepath}" = "${errmsg}" ]; then
echo "Regex failed. Could not auto-generate filename from stderr.";
return 1;
fi;
if [ ! -e "${filepath}" ]; then
echo "Regex failed. '${filepath}' does not exist.";
return 1;
fi;
dos2unix "${filepath}";
if [ $? -ne 0 ]; then
echo "Failed to run \`dos2unix '${filepath}'\`.";
return 1;
fi;
# recursive case
_unwindows;
};
_unwindows;
基本上,它试图做git add .
。如果命令失败,它会从错误输出中获取不兼容文件的名称。然后在该文件上运行dos2unix
。它不断重复这个过程直到git add .
工作。
如果你运行这个,你应该看到dos2unix: converting file xxx to Unix format...
重复。如果你不这样做,它不工作,所以只需按CTRL +ç或命令+Ç到停止。
这些问题让我讨厌这个世界。 – rpeg