當我做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