当我做git status
我看到这一点:`git的status`和EOL检测
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: project/schema-readme.md
modified: project/vp-automate.php
奇怪的是,这两个文件是不实际修改 - 它们是二进制相同,逐字节。
现在我认为我知道他们为什么打上了混帐的修改:这是因为他们使用的CRLF行结束,而我们的项目最近增加了一个.gitattributes
文件与此内容:
* text=auto eol=lf
这应该意味着当承诺时,Git会实际更新它们以使LF行结束。那么为什么git status
将这些文件标记为“已修改”,即使它们当前未被修改?
编辑:这是奇怪的,也有在我的项目更多的文件使用CRLF行结束和修改不检测。我不明白什么特别之处schema-readme.md
和vp-automate.php
了Git检测它们进行修改。
事情是我不想CRLF - 由于各种原因,我们甚至需要在Windows上使用LF。这个问题完全是关于为什么Git检测到一些未更改的文件已更改以及是否与行尾有关。 – Borek 2014-11-25 14:50:41