为什么git在将文件复制到其他文件之上时会看到整个文件被更改?

Cli*_*ntm 6 git

当我将文件复制到git控制目录中的另一个文件的顶部时...我看到git认为整个文件已经改变而不是一个小块...为什么?

这是我的意思的一个例子... http://github.com/cmodien/fileupdatetest/commit/90309ed099e257cd98218b4504cd2cd3a3a47a27

好的...我检查了文件中的行结尾...原始文件有crlf行结尾.我粘贴在原始文件上的文件有lf行结尾.这有道理我猜...我从Windows用户那里得到了原始文件,并且我从mac用户那里收到了新文件.

我该如何解决?

Ada*_*ruk 5

正如 Twitter 上提到的,(@adymitruk) 您遇到了行结尾问题。AutoCRLF 设置可能没有设置为“false”,因为它应该是 - 除非您正在进行跨平台开发。

解决方案是将其设置为 false,修复行结尾,将 autocrlf 设置为 false,然后提交。完成此操作后,您将能够复制这些文件,然后只能看到实际的更改。


Cli*_*ntm 2

我用这个来解决这个问题...

尝试使用 git filter-branch 修复行结尾,但没有运气

我最初尝试遵循这个... http://help.github.com/dealing-with-lineendings/但有点不清楚在 mac/nix 上你需要将 core.autocrlf 设置为输入而不是 true。

另一个稍微复杂的问题是,我的 gitignore 中忽略了一些文件,我也需要修复这些文件......所以这个命令:

git diff --cached --name-only -z | xargs -0 git add
Run Code Online (Sandbox Code Playgroud)

失败了...所以我必须运行这个...

git diff --cached --name-only -z | xargs -0 git add -f
Run Code Online (Sandbox Code Playgroud)

强制它修复被忽略的文件......