我有一个源存储库,可以从 Windows 和 Linux 中使用。
我知道 Git 会自动将 EOL 转换为Windows上的本地标准: \ r \ n , \ n < / strong>在Linux上。
这不是源文件的问题。
但是我有一些 CSV文件使用具有给定EOL字符( \ r \ n )的固定格式,不应该更改,但Git也会转换它们,破坏了一些代码。
我尝试通过在 .gitignore 文件旁边的根目录创建 .gitattributes 文件来阻止CSV文件的EOL转换,其中包含以下内容:
*.csv -text
我已经应用了我所理解的内容:http://git-scm.com/docs/gitattributes
但是Git仍在Linux上将 \ r \ n 转换为 \ n 。
我应该使用auto.crlf等其他设置吗?
请注意,我对Linux本地存储库的控制有限,因为它由持续集成服务器Jenkins 管理。
感谢您的任何意见。
答案 0 :(得分:6)
请注意,git使用LF作为EOL的内部表示。
这意味着在您的情况下,* .csv文件在添加/提交时已经更改。
所以解决方案大致如下:
实际上,它可以在一次提交中完成,并使用以下命令:
### ... update .gitattributes
git rm --cached '*.csv'
### ... find -name '*.csv' -print0| xargs -0 unix2dos
git add '*.csv'
git add .gitattributes
git commit
说明:
git rm --cached
从索引中删除所有csv文件,将它们留在磁盘上; unix2dos
为例)git add '*.csv'
将它们添加回来,这次没有任何转换。