当我将文件复制到git控制目录中的另一个文件的顶部时......我看到git认为整个文件已经改变而不是一个小块...为什么?
这是我的意思的一个例子...... http://github.com/cmodien/fileupdatetest/commit/90309ed099e257cd98218b4504cd2cd3a3a47a27
好的......我检查了文件中的行结尾...原始文件有crlf行结尾。我粘贴在原始文件上的文件有lf行结尾。这是有道理的我猜...我从Windows用户那里得到了原始文件,并且我从mac用户那里收到了新文件。
我该如何解决这个问题?
答案 0 :(得分:4)
正如在Twitter上提到的那样,(@adymitruk)你遇到了行结尾的问题。除非您正在进行跨平台开发,否则AutoCRLF设置可能不会设置为“false”。
解决方案是将其设置为false,修复行结尾将autocrlf设置为false然后提交。完成后,您将能够复制这些文件,然后才能看到实际的更改。
答案 1 :(得分:3)
有两种常见情况可能发生:
答案 2 :(得分:2)
我用这个来解决问题......
Trying to fix line-endings with git filter-branch, but having no luck
我最初试图遵循这个... http://help.github.com/dealing-with-lineendings/但是有点不清楚在mac / nix上你需要将core.autocrlf设置为输入而不是真的。
另一个轻微的复杂情况是我在git中忽略了一些文件而忽略了我需要修复...所以这个命令:
git diff --cached --name-only -z | xargs -0 git add
失败了......所以我不得不跑这个......
git diff --cached --name-only -z | xargs -0 git add -f
强制它修复被忽略的文件......