为什么 sed 会导致 git 认为整个文件都被重写了?

为什么 sed 会导致 git 认为整个文件都被重写了?

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

答案1

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

相关内容