为什么 sed 会导致 git 考虑重写整个文件?

wes*_*wes 4 cygwin git sed

在 Win7x32 上使用 Cygwin,当我sed用来替换文件中的某些值时,git则认为整个文件被完全重写(即 500 次插入,500 次删除)。这里发生了什么?文件中只有一行实际改变了,替换值与原来的长度相同。我希望git只识别发生变化的行。唯一似乎发生了变化的是从stat some/file.txt. 有没有办法告诉git在我的sed通话期间忽略任何相关的更改值,或者告诉sed不要更改任何导致git看到具有全新内容的文件的值?

小智 7

我不太会使用 Windows,但也许sed正在更改您的行尾标记。该file命令将告诉您正在使用哪种文本编码。此外,您可以cat -e在调用之前和之后运行sed;如果文件是为 Windows 编码的,每行将以^M.